我们目前使用 $_SESSION 作为当前会话数据(即登录、当前状态等)。这个脚本在很长一段时间内都运行得很好,但我们从旧的 PHP4 服务器变成了 PHP5 服务器。现在经过一段时间(大约 10 分钟,但似乎不一致),_SESSION 美元被擦除!(:O!但看起来好像 PHPSESSID 仍然驻留在 cookie 中,所以 cookie 似乎没有过期......
我的服务器当前设置是:(phpinfo)
http://jsfiddle.net/6DjcC/1/
可能是什么原因造成的?我敢肯定,这是我完全忽略的小东西,是主要原因。
我的会话变量:
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 15400 15400
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 /dev/urandom /dev/urandom
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 154000 154000
session.gc_probability 0 0
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 /var/lib/php /var/lib/php
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 0 0
我正在使用以下"非标准扩展":
-X-调试
-苏霍辛
-电子加速器
我敢打赌,其他应用程序正在清除您的会话。他们似乎save_path共享同一个会话。
使用 session_save_path() 更改save_path。
您在共享主机上吗?如果是,请尝试更改session.save_path:php 中的 session_start() 会弄乱我的用户会话长度吗?