根据 Chrome,我网站的 PHPSESSID cookie 过期设置为
Expires: Monday, November 26, 2012 2:46:39 PM
但会话仅在几个小时后到期。我在每一页上调用 session_start() 。阅读为类似问题提供的解决方案,我尝试设置
ini_set("session.cache_expire",300*24*60*60);
和
ini_set("session.gc_maxlifetime",100*24*60*60);
之前,session_start()
但这并没有解决问题。(它们的初始值分别设置为 180 和 1440。)
我在共享服务器上,另一个建议是更改默认的 tmp 目录,使其不是根目录(某些垃圾收集过程可能正在删除 cookie),所以我这样做了
$docroot = $_SERVER['DOCUMENT_ROOT'];
$tmpdir = "$docroot/tmpx";
session_save_path($tmpdir);
这并不能解决问题。(我在其他浏览器中也有同样的问题,而不仅仅是 Chrome。)我还有什么可能做错的?
更新:我在本地保存了当前会话的文件,然后在几个小时后尝试登录。虽然 Chrome 中的 PHPSESSID cookie(即,其内容是此会话文件名称的 cookie)仍按预期以未来 100 天的日期存储,但服务器上的实际会话文件现在不包含任何数据。(它存在,但它是 0 字节而不是之前的 192 字节。)所以看起来会话文件没有被删除,但内容正在被删除。