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

Cha*_*Cha 2 php session

可能重复:
PHP会话快速超时

在我设置的.htaccess文件中

php_value session.gc_maxlifetime 14400 
Run Code Online (Sandbox Code Playgroud)

即4小时

如果我确认使用echo ini_get('session.gc_maxlifetime');我得到14400.但我的会话仍然会在不到2小时内到期.

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

Arn*_*anc 6

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

    解决方案:

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