PHP会话过期很快就会过期

时间:2011-12-04 00:18:56

标签: php session

我在VPS上运行带有PHP Fastcgi的nginx服务器的网站。我试图配置php.ini(在/ etc / php5 / cgi中)让PHP会话持续时间超过3天(259200秒),但它没有用,我的php会话持续时间不超过一小时。

我在php.ini中的当前会话配置:

session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 259200
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 259200
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.entropy_length = 0
session.cache_limiter = nocache
session.cache_expire = 259200
session.use_trans_sid = 0
session.hash_function = 0

这可能是什么问题?

2 个答案:

答案 0 :(得分:11)

这听起来有点像服务器上的Ubuntu或Debian。如果我记得正确的话,某处有一个cronjob(由php5或php5-common软件包安装)可以更频繁地清理你的会话目录。

我建议您将会话配置为保存在其他位置(默认值)。调整session.save_path并验证cronjob不会清空它。

cronjob就像/etc/cron.d/php一样 - 确定无误,运行dpkg -L php5dpkg -L php5-common。假设您使用的是Ubuntu(或Debian),则应显示所有已安装文件的位置。

答案 1 :(得分:4)

为了帮助您进行调试,您可以通过执行以下命令检查PHP cron作业“看到”的当前设置:

/ usr / lib中/ PHP5 / maxlifetime

maxlifetime脚本在所有php.ini文件中搜索session.gc_maxlifetime并使用最大值。 打印的值以分钟为单位。