【问题标题】:My PHP sessions times out even though the session files are intact即使会话文件完好无损,我的 PHP 会话也会超时
【发布时间】:2011-04-05 11:59:12
【问题描述】:

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

【问题讨论】:

    标签: php session-timeout


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        ob_start();
        session_start();
        

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

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

        【讨论】:

          【解决方案4】:

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

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

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

          【讨论】:

            猜你喜欢
            • 2014-04-24
            • 2021-06-30
            • 1970-01-01
            • 1970-01-01
            • 2012-05-29
            • 2014-08-14
            • 2011-03-05
            • 2011-10-17
            相关资源
            最近更新 更多