我发现我的“/tmp”目录(一台 CentOS 机器)中有数千个文件,其中几乎所有文件都是 PHP 会话文件。
我担心这可能会对我的系统造成影响。
这些文件是否曾被操作系统、Apache 或 PHP 删除过?还是我必须自己处理?
答案1
它们应该由 PHP 垃圾收集器删除。频率由 php.ini 中的设置控制session.gc_maxlifetime
。如果此功能没有启动,则可能会出现其他问题。
答案2
在默认的 Debian 和 Ubuntu 上,会话由 cron 清理/etc/cron.d/php5
# Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete
其中,/usr/lib/php5/maxlifetime
给出在 中设置的以分钟为单位的生命周期session.gc_maxlifetime
。
答案3
重启时也是如此 - 因为 /tmp 总是在重启时被清除。
答案4
您可以设置一个 cron 脚本来自动清理它们。通常,测试创建日期是否早于系统上设置的 cookie 寿命是一个好主意。
限制 cookie 寿命的方法如下(必须在脚本输出任何内容之前完成):
<?php
session_name('my_site_name');
session_set_cookie_params(1209600); # max cookie age of 14 days
# send cookie headers
session_start();
?>
然后,在清理脚本中:
#!/bin/sh
find /tmp -maxdepth 1 -type f -name 'php_session_file_prefix*' -ctime +15 -exec rm -f {} \;
然后,在你的 crontab 中:
# Run daily cron jobs at 03:40 every day
40 3 * * * /path/to/php-session-cleanup.sh