我已经阅读了几十种解决方案并尝试了几乎所有这些解决方案,但无论如何我的会话很快就会超时。我正在使用Debian安装并将/ usr / lib / php5 / maxlifetime中的max变量设置为86400.我还在php.ini中设置了session.gc_maxlifetime = 86400。我已经使会话cookie有效了一个小时,每次重新加载页面时我都会用另一个小时更新它。我试过设置ini_set(“session.gc_maxlifetime”,“86400”);在我的前端控制器中。但没有任何帮助。如果我登录我的网站并等待大约20分钟,那么当我点击页面上的链接时,我将被注销。会话cookie仍然有效,并且/ var / lib / php5中的会话文件仍然存在。我只是不明白。我还应该提一下,我在系统上使用Parallels PLESK,它对标准的Debian安装进行了很多修改,但我不认为这是问题所在。任何人吗?
答案 0 :(得分:1)
完全有可能有多个.ini被加载,并且你的会话改变的那个被一个稍后加载的链被覆盖。转储会话验证/登录代码所在的phpinfo()
,并查看会话设置。部分输出也将是已加载的.ini文件的列表。
答案 1 :(得分:0)
你有可能有一些.htaccess与其他一切相冲突吗?你确定你没有在你的代码或其他自定义php.ini中的其他地方设置它吗? 每当我遇到这样的问题,我终于意识到我忘记了一个地方。
答案 2 :(得分:0)
我不确定这是否会有所帮助,但要确保你同时使用ob_start()&在session_start();
ob_start();
session_start();
这很奇怪,解决方案可能是用cookie实现“记住我”功能。我知道会话可能非常易变,如果你登录另一个comp,或者使用相同的comp但不同的浏览器,cookie可能会被破坏。
会话真的被破坏了吗?或者是否正在生成新会话?
答案 3 :(得分:0)
php -i | grep session.cookie_lifetime (在控制台)或 phpinfo()(在脚本中)验证您对cookie生命周期参数的更改?
如果您使用Firefox,请尝试安装Web Developer Toolbar和Firebug以检查Cookie和网络活动。在调查会话cookie的哈希值发生变化的问题时,这对我来说是一个非常有用的组合。
您的代码或库中的某个地方也可能会调用session_set_cookie_params(),这会使您的预期行为超载。您可以使用上述任一扩展程序检查Cookie,以验证其过期时间。