Debian 及其衍生产品 (Ubuntu) 不使用 php 会话垃圾收集器
session.gc_probability = 0
相反,他们使用 cron /etc/cron.d/php5
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete
为什么 Debian 选择这样做?
因为Debian对(1733,owner root,group root)设置了非常严格的权限
/var/lib/php5
来防止PHP会话劫持。不幸的是,这也阻止了本地 PHP 会话垃圾收集器的工作,因为它看不到那里的会话文件。cron 作业以 root 身份运行,它有足够的访问权限来查看和清理会话文件。编辑:支持文档:该行为是针对错误 #267720建立的。(以前在库存
php.ini
文件中有关于此的评论,但我现在在基于 wheezy 的 PHP 安装中看不到它们。)它在流量较低的站点上可能会更可靠一些(如果您每天只有几百次点击,而 GC 仅每隔几千次左右触发一次,会话可能会比它们应该停留的时间长得多)我想这可能是一个如果您有很多会话,则对服务器的苛刻程度要比本机 GC 低一些。