我正在将我的应用程序转移到另一台服务器,但我的 PHP 会话似乎没有过期。
在 php.ini 中我设置了:
session.gc_probability = 1
session.gc_divisor = 1
session.gc_maxlifetime = 300
当然,启用了 Cookie。而且,5 分钟后,如果我刷新页面,我仍然登录。即使我关闭浏览器并重新打开页面。编辑:实际上,关闭浏览器似乎确实清除了会话。
由于每个请求都首先通过某个脚本(RewriteRule / begin.php
),我很幸运,我可以解决这个问题:
session_start();
if (time() > @$_SESSION['sessionLimit']) {
session_destroy();
session_start();
}
$_SESSION['sessionLimit'] = time() + ini_get('session.gc_maxlifetime');
但是,我仍然不明白我做错了什么以及为什么在旧服务器中一切都很好(即使session.gc_divisor
设置为 10)。
旧服务器:Windows Server 2003、Apache 2.4、PHP 5.4.5,全 32 位
新服务器:Windows Server 2008 R2、Apache 2.4、PHP 5.5.4,全部为 64 位