2

我很好奇

为什么 cron 用于清理 Ubuntu 中的会话文件?

我研究过它,发现两个链接说

“出于安全目的,会话保持在 root 权限下。因此,PHP 垃圾收集器无法清理过期的会话文件。为了清理此类文件,php 有每 30 分钟运行一次的 cron 作业。”

1. 为什么 Debian 使用 cron 作业清理 php 会话,而不是使用 php 的内置垃圾收集器?

2. Debian 错误报告日志 - #267720

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 下运行,为什么它无法删除会话文件?

4

0 回答 0