发布于2026-07-04 阅读(0)
扫一扫,手机访问
在Ubuntu环境下管理PHP日志,日志轮转是个绕不开的话题。如果不做轮转,日志文件越滚越大,最后连查个错都费劲。好在系统自带的logrotate工具就能搞定,配置起来也不复杂。

logrotate先确认一下系统里有没有装logrotate,大部分Ubuntu默认是带了的。没装的话也很简单:
sudo apt-get update
sudo apt-get install logrotate
PHP的日志一般放在/var/log/php/目录下,但也可能因配置而异。先看看你的PHP-FPM或PHP本身的日志配置,把路径记下来,后面配置会用。
logrotate配置文件推荐为PHP日志单独建一个配置文件,方便管理。在/etc/logrotate.d/目录下新建一个,比如叫php-fpm:
sudo nano /etc/logrotate.d/php-fpm
文件里填上下面的内容(注意路径和权限根据实际情况调整):
/var/log/php/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root adm
sharedscripts
postrotate
if [ -f /var/run/php-fpm.sock ]; then
sudo kill -USR2 `cat /var/run/php-fpm.pid 2>/dev/null` 2>/dev/null || true
fi
endscript
}
简单说说每项的作用:
daily:每天轮转一次。missingok:日志文件不存在也不报错。rotate 7:保留最近7个轮转后的文件。compress:旧文件自动压缩。notifempty:空文件不轮转。create 640 root adm:轮转后新建日志文件,权限640,属主root,属组adm。sharedscripts:所有日志文件轮转完才执行一次postrotate脚本。postrotate:轮转完成后,通过发送USR2信号让PHP-FPM重新打开日志文件,这一步很关键,否则日志可能还在写旧文件。保存完配置文件,建议手动执行一次轮转,看看有没有语法错误或权限问题:
sudo logrotate -f /etc/logrotate.d/php-fpm
这条命令会强制触发轮转,并且把执行过程打印出来。如果没报错,基本就稳了。
logrotate本身由cron驱动,每天自动跑一次。检查一下/etc/cron.daily/logrotate文件,确认它存在且可执行——通常安装后就有了,不用额外操心。
最后,隔段时间看看日志目录里的文件数量和大小,确认轮转在正常工作:
ls -lh /var/log/php/
看到压缩过的旧日志(.gz后缀)和不同日期的文件,说明轮转已经跑起来了。
这样一套配置下来,PHP日志就不会无限制膨胀了,既省磁盘空间,排查问题时也容易定位到具体日期。没什么高深的东西,关键是别漏了postrotate那一步,不然日志文件切了,进程还在往旧文件里写,等于白忙活。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8