我刚刚将我的应用程序从本地 WAMP 迁移到实际的在线服务器。这导致了会话 ID 未按其显示的样子保存的问题。
- 我已经检查了 session_start 之前输出的不需要的字符
- 我似乎找不到任何会话文件保存在我的 /tmp
这些是我的会话设置:
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 0 0
- 在线服务器正在运行:PHP 版本 5.3.9,而 WAMP 正在运行:PHP 版本 5.3.5。
- 通过查看发送的标题和每个页面加载中的响应,我得到以下信息,set-cookie 发送适当的会话 id,收到的响应发送一个新的响应,就好像没有任何请求一样。
- 我在预览 URL 上运行该站点(启用 SSL)。我不知道这有什么关系,我的域还没有注册。
错误代码很简单:
$sId = session_id();
if ($sId == '') { session_start(); }