为什么我的会话比我设定的时间更早到期?

时间:2011-09-15 10:01:46

标签: php session

  

可能重复:
  PHP sessions timing out to quickly

在我的.htaccess文件中,我设置了

php_value session.gc_maxlifetime 14400 

即。持续4个小时

如果我使用echo ini_get('session.gc_maxlifetime');进行验证,我会收到14400.但是我的会话仍然会在不到2小时内到期。

你认为这里出了什么问题?任何帮助赞赏。感谢

2 个答案:

答案 0 :(得分:6)

  • 某些发行版(至少Debian)有一个cronjob,可以定期删除旧会话。这个cronjob从系统的php.ini中获取session.gc_maxlifetime设置,从而忽略你的vhost配置。

    解决方案:

    • 在系统的php.int中设置session.gc_maxlifetime(例如/etc/php5/apache2/php.ini
    • 将此虚拟主机的会话移至单独的目录(设置session.save_path
  • 另一个可能的原因是会话cookie在会话本身之前到期。确保session.cookie_lifetime变量至少等于session.gc_maxlifetime(或0)。

答案 1 :(得分:0)

如果您使用的是Debian计算机,则可能会自动安装cronjob,删除会话。请看this SO question,特别是Paul Dixon的答案。