CakePHP 3调试会话超时

7
我们将应用程序迁移到新的服务器上,现在登录用户的会话太快过期了(不确定具体时间)。我们尝试了许多方法来查找会话为什么在生产环境中过期,但是到目前为止我们还没有成功。我们想将过期时间设置为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的详细信息,确保其设置正确的过期时间。 - Greg Schmidt
感谢您的回复。Cookie 在20天内正确地过期。 - xinaris
检查您是否正在加载正确的配置。在您的视图中使用phpinfo(),并检查会话变量是否正确。 - ikyuchukov
2个回答

3

黑客会很高兴地看到会话永不过期,因为这样任何被盗的会话ID都将成为解锁您的Web应用程序的永久钥匙。

关于为什么您尝试使用session.gc_maxlifetimesession.cookie_lifetime没有起作用的详细信息可以在这里找到。

无论如何,在启动会话之前将session.gc_probability的值设置为0即可实现。


0

尝试重新启动您的应用服务器。有时服务器缓存会表现得很奇怪。希望这能解决您的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接