PHP 会话超时过快

2022-08-30 12:25:42

我在我的网站上使用php Sessions,似乎它们正在随机间隔“消失”。我不知道它们是否由于不活动而超时,或者我的代码是否有问题,但是有没有办法控制它们何时过期的会话?

比如我可以在代码中放入一些东西,或者在php.ini文件中更改一些东西吗?

更新-因此,只是在这里更新,我切换了主机,神奇地会话开始工作。我不知道出了什么问题,但显然他们不想正常工作。


答案 1

随机过期是多个应用程序共享的会话数据目录的典型症状:时间最短的应用程序可能会从其他应用程序中删除数据。原因:session.gc_maxlifetime

  1. 默认情况下,PHP 将会话文件存储在系统临时目录中。
  2. 内置文件处理程序不跟踪谁拥有哪个会话文件(它只是将文件名与会话 ID 匹配):

    Nothing bug good old files

我的建议是,您可以为应用程序配置一个专用自定义会话目录。这可以通过session_save_path()函数或设置session.save_path配置指令来完成。请查看您的框架文档,以获取有关如何在自己的代码库中执行此操作的确切详细信息。


答案 2

Debian 使用 cron 作业以安全的方式自动使会话过期。如果您使用的是 Debian,请查看 /etc/cron.d/php5。


推荐