【问题标题】:CakePHP 3 debug session timeoutCakePHP 3 调试会话超时
【发布时间】:2018-08-10 08:40:56
【问题描述】:

我们将应用程序移到了新服务器上,现在对于已登录的用户来说会话即将过期(不确定确切的时间)。我们尝试了很多方法来找出会话在生产环境中过期的原因,但直到现在我们都没有成功。我们想把有效期设置为 20 天。

我们尝试过的东西:

这是当前配置:

'Session' => [
  'defaults' => 'php',
  'cookie' => 'MYAPPHO',
  'timeout'=> 80320, // in min
  'ini' => [
      'session.gc_maxlifetime' => 1728000, // in sec
      'session.cookie_lifetime' => 1728000
  ]
]

我们也尝试过设置

'defaults' => 'cache'

并在 .htaccess 中设置值

php_value session.cookie_lifetime 1728000
php_value session.gc_maxlifetime 1728000
php_value session.cache_expire 1728000

但行为是一样的。

我们还在 Network\Session::_timedOut() 中进行了一些调试,但没问题,因为这个原因永远不会过期。

有什么方法可以调试更多,找出导致会话过期的原因吗?

【问题讨论】:

  • 使用浏览器工具检查 cookie 的详细信息,确保它设置为正确的到期时间?
  • 感谢您的回复。 Cookie 将在 20 天后正确过期。
  • 检查您是否真正加载了正确的配置。在您的一个视图中使用 phpinfo() 并检查会话变量是否正确。

标签: php .htaccess session cakephp-3.0 cakephp-3.x


【解决方案1】:

黑客会很高兴让会话永不过期,因为这样任何被盗的会话 ID 都将成为解锁您的网络应用程序的永久密钥。

有关您尝试使用 session.gc_maxlifetimesession.cookie_lifetime 的方法为何无效的更多详细信息,请参见 here

无论如何,您可以在开始会话之前将session.gc_probability 的值设置为0。

【讨论】:

    【解决方案2】:

    只需尝试重新启动您的应用程序服务器。有时服务器缓存的行为很奇怪。希望这能解决您的问题。

    【讨论】:

      猜你喜欢
      • 2018-06-05
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 2013-06-18
      • 2019-09-27
      • 1970-01-01
      相关资源
      最近更新 更多