我很好奇
为什么 cron 用于清理 Ubuntu 中的会话文件?
我研究过它,发现两个链接说
“出于安全目的,会话保持在 root 权限下。因此,PHP 垃圾收集器无法清理过期的会话文件。为了清理此类文件,php 有每 30 分钟运行一次的 cron 作业。”
1. 为什么 Debian 使用 cron 作业清理 php 会话,而不是使用 php 的内置垃圾收集器?
Apache 有 www-data 用户,所以我认为 PHP 模块也在为 www-data 用户运行(对此不确定)。
如果是这种情况,PHP 如何访问具有 root 所有者的会话目录来创建/读取会话文件?
即使 apache 有 www-data 用户,PHP 是否以 root 权限运行?如果 PHP 以 root 权限运行,那么 GC 如何无法从具有 root 所有者的会话目录中读取会话文件。
还是 GC 使用 www-data 用户运行而 PHP 使用 root 用户运行?
除此之外:
我已经检查了 /var/lib/php/sessions 中创建文件的用户和所有者,它显示了创建的会话文件的 www-data:www-data。
/var/lib/php/sessions 的权限是drwx-wx-wt
即它有粘性位“t”
粘性位:
粘性位是保护目录中文件的权限位。如果目录设置了粘性位,则文件只能由文件所有者、目录所有者或 root 删除。此特殊权限可防止用户删除其他用户的文件。 参考
现在,问题是在哪个用户下运行 GC?如果它在 www-data 下运行,为什么它无法删除会话文件?