PHP会话在几分钟后就超时了


PHP session times out after only a few minutes

我们在cPanel LAMP共享主机服务器上有一个PHP应用程序(SilverStripe)。CMS用户每隔几分钟就会丢失一次会话。下面是一些基于托管平台上的phpinfo()的会话设置:

session.gc_maxlifetime = 0
session.gc_divisor = 100
session.gc_probability = 1
session.save_handler = files
session.save_path = /tmp
session.cookie_lifetime = 0
PHP代码中没有会话管理。事实上,SilverStripe CMS实际上每5分钟ping一次服务器以保持会话存活,但超时在此之前就发生了。

是什么原因导致的?

查看php.ini,为session.gc_maxlifetime设置的值是以秒为单位的ID生存期

我相信默认值是1440秒(24分钟)

http://www.php.net/manual/en/session.configuration.php

编辑:正如一些评论指出的那样,上述内容并不完全准确。这里有一个关于为什么以及如何实现会话生命周期的很好的解释:

它没有出现在文档中,而是设置会话。Gc_maxlifetime设置为0表示在浏览器关闭之前会话不会过期。

当然,这仍然不能解决与垃圾收集器自己做事情相关的问题。最好的解决方案似乎仍然是更改session.save_path

内部案例CPANEL-12629是为了解决/scripts/clean_user_php_sessions的问题,在运行EasyApache 3的系统上,超过24分钟的会话总是被删除(尽管配置了自定义会话)。gc_maxlifetime值)。我将在这个帖子中更新更多关于这个案件状态的信息。同时,临时的解决方法是编辑以下文件:

代码:

/usr/local/cpanel/scripts/clean_user_php_sessions
Within the file, change this entry:
代码:

其他{my $dirs = Cpanel::PHPINI::get_directives(['session。save_path"、"会话。Max_lifetime '], 1, '/usr/local/lib');clean_sessions ($ dirs ->{会话。save_path}{"价值"},$ dirs ->{"会议。max_lifetime’}{"价值"});}

返回1;

:

代码:

其他{my $dirs = Cpanel::PHPINI::get_directives(['session。save_path"、"会话。Gc_maxlifetime '], 1, '/usr/local/lib');clean_sessions ($ dirs ->{会话。save_path}{"价值"},$ dirs ->{会话。gc_maxlifetime’}{"价值"});}

返回1;

然后,用以下命令从cPanel更新中排除该文件:

代码:

echo '/usr/local/cpanel/scripts/clean_user_php_sessions' >> /etc/cpanelsync.exclude

记得编辑"/etc/cpanelsync"。一旦我们推出了一个更新来解决这个问题,排除"来删除这一行。

来源:https://forums.cpanel.net/threads/php -会话超时-自- 64 - 0 - update.598247/