从MySQL开始的一切都无法启动。
经过一些networkingsearch后,我发现服务器耗尽了inode。
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on /dev/simfs 500000 500000 0 100% / none 131072 56 131016 1% /dev none 131072 1 131071 1% /sys/fs/cgroup none 131072 63 131009 1% /run none 131072 4 131068 1% /run/lock none 131072 1 131071 1% /run/shm none 131072 1 131071 1% /run/user
进一步的谷歌search导致我假设PHP会话文件永远不会被删除…这似乎是真实的,因为运行ls php5 | wc -l ls php5 | wc -l给我424669 !
我读了默认的PHP.ini session.gc_probability被设置为0,并且ubuntu通过cronjob /etc/cron.d/php5.处理清理/etc/cron.d/php5.
/etc/cron.d/php5
# /etc/cron.d/php5: crontab fragment for php5 # This purges session files older than X, where X is defined in seconds # as the largest value of session.gc_maxlifetime from all your php.ini # files, or 24 minutes if not defined. See /usr/lib/php5/maxlifetime #Look for and purge old sessions every 30 minutes 09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime)
这看起来是正确的,那么为什么这个脚本不工作? 有没有办法让我确认这实际上是每30分钟运行一次?
PHP会话文件永远不会被删除
你不会说你正在使用什么会话处理程序,只要会话垃圾收集被触发,假设它的默认,过期的会话应该被清除。 你的session.cache_expire太高和/或session.gc_probability太低,和/或session.gc_divisor太高。
session.gc_probability默认设置为0
没有 – 只在Debian系统上(Ubuntu是从Debian派生的)。 有人在Debian 认为在会话存储上有奇怪的权限可以防止会话高枕无忧。 实际上它只涉及可能发生的攻击的一个非常狭窄的子集 – 当你采取适当的措施来处理更可能的攻击媒介时,问题就会消失。
这样做的后果是,如果您想以非Debian预先确定的方式pipe理您的PHP会话,则需要root权限。
我基本上喜欢Debian–但是这总让我觉得很傻。
您可以使用Logger命令写入syslog,因为您将它作为Root运行。
&& logger -t PHP_SESSIONS“清除了PHP会话”
然后“ cat / var / log / syslog | grep PHP_SESSIONS ”来查看它运行的时间。
当然,这只是告诉你cron的工作,而不是成功。