【发布时间】:2012-11-09 10:53:20
【问题描述】:
我刚刚将我的应用程序从本地 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(); }
【问题讨论】:
-
感谢您的所有回复。我从 session_start(); 开始现在,我直到执行后期才检查 session_id() (只是为了找出它是哪一个)。我的会话 ID 仍然在每次请求时都在刷新,而无需我调用重新生成的 ID 或类似的东西。只需 session_start -> 存储一些变量 -> 执行结束(应该 write_close) -> 下一页请求 -> Id 和 session 变量不存在。
-
看来是主持人的预览页面问题。谢谢大家的回答!