2

我已经阅读了数十种解决方案并尝试了几乎每一种,但无论如何我的会话很快就会超时。我正在使用 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 安装做了很多修改,但我认为这不是问题所在。任何人?

4

4 回答 4

1

完全有可能加载了多个 .ini 文件,而您进行会话更改的那个文件被链中稍后加载的一个文件覆盖。转储phpinfo()您的会话验证/登录代码所在的位置,并查看会话设置是什么。部分输出还将是已加载的 .ini 文件的列表。

于 2010-08-30T17:57:34.420 回答
0

php -i | grep session.cookie_lifetime(在控制台)或phpinfo()(在脚本中)验证您对 cookie 生命周期参数的更改?

如果您使用 Firefox,请尝试安装 Web Developer Toolbar 和 Firebug 以检查 cookie 和网络活动。在调查会话 cookie 的哈希值发生变化的问题时,这对我来说是一个非常有用的组合。

也有可能在您的代码或库中的某处调用session_set_cookie_params()会超载您的预期行为。您可以使用上述任一扩展程序检查 cookie 以验证其过期时间。

于 2010-09-20T02:37:18.630 回答
0

是否有可能您的 .htaccess 与其他所有内容发生冲突?你确定你没有在你的代码或一些自定义的 php.ini 中设置它吗?每次我遇到这样的问题时,我终于意识到我忘记了一个地方。

于 2010-08-29T19:05:05.260 回答
0

我不确定这是否会有所帮助,但请确保您同时使用 ob_start() 和 session_start();

ob_start();
session_start();

这很奇怪,解决方案可能是使用 cookie 实现“记住我”功能。我知道会话可能非常变化无常,如果您登录另一个 comp,或者相同的 comp 但不同的浏览器,cookie 可能会被破坏。

会话真的被破坏了吗?或者正在生成一个新会话?

于 2010-09-11T01:21:27.837 回答