【问题标题】:PHP Sessions expire too soonPHP 会话过期太快
【发布时间】:2012-01-12 10:02:52
【问题描述】:

我在 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

这里可能有什么问题?

【问题讨论】:

  • 你确定这是被加载到 PHP 中的 php.ini 文件吗?您是否尝试过仔细检查phpinfo() 中的“加载的配置文件”路径以确保?
  • 尝试在 PHP 文件中使用 var_dump(ini_get('session.cookie_lifetime')); 在 PHP ini 值的所有适用设置中,以确保它们不会被其他地方覆盖。
  • @animuson:是的,它正在加载中。配置文件 (php.ini) 路径 /etc/php5/cgi 加载的配置文件 /etc/php5/cgi/php.ini 扫描此目录以获取其他 .ini 文件 /etc/php5/cgi/conf.d 解析的其他 .ini 文件/etc/php5/cgi/conf.d/curl.ini, /etc/php5/cgi/conf.d/gd.ini, /etc/php5/cgi/conf.d/mysql.ini, /etc/php5/ cgi/conf.d/mysqli.ini, /etc/php5/cgi/conf.d/pdo.ini, /etc/php5/cgi/conf.d/pdo_mysql.ini
  • @Treffynnon: string(6) "259200"
  • 你的 fastcgi 缓存有效期是多少?

标签: php session


【解决方案1】:

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

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

cronjob 类似于/etc/cron.d/php - 可以肯定的是,运行dpkg -L php5dpkg -L php5-common。假设您在 Ubuntu(或 Debian)上,这应该会显示所有已安装文件的位置。

【讨论】:

  • 最后我通过storing sessions with memcached解决了这个问题。但是,您的解决方案看起来是有效的,所以我会接受您的回答。谢谢。
【解决方案2】:

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

/usr/lib/php5/maxlifetime

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

【讨论】:

  • 我猜这是 ubuntu 15.10 中的脚本:/usr/lib/php5/sessionclean
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 2012-02-05
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 2012-05-31
相关资源
最近更新 更多