在 CentOS 上,PHP 日志分割常见有几种做法,取决于你用的是 PHP-FPM 还是 Apache + mod_php,以及日志是 error_log / access_log / php-fpm 日志。下面按常见场景给你一套可落地方案。
一般位于:
/var/log/php-fpm/error.log
/var/log/php-fpm/www-error.log
CentOS 自带 logrotate,非常适合做日志分割。
vim /etc/logrotate.d/php-fpm
/var/log/php-fpm/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
systemctl reload php-fpm > /dev/null 2>&1 || true
endscript
}
⚠️ 注意:
www-data 可能是 apache / nginx,根据你的运行用户调整php-fpm 服务名可能是 php-fpm 或 php74-php-fpmlogrotate -d /etc/logrotate.d/php-fpm
php -i | grep error_log
常见路径:
error_log = /var/log/php_error.log
vim /etc/logrotate.d/php
/var/log/php_error.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 apache apache
postrotate
systemctl reload php-fpm > /dev/null 2>&1 || true
endscript
}
/etc/logrotate.d/httpd
默认已配置,一般无需额外处理。
slowlog = /var/log/php-fpm/www-slow.log
logrotate 示例:
/var/log/php-fpm/www-slow.log {
weekly
rotate 4
compress
missingok
notifempty
}
mv php-fpm.log php-fpm.log.2026-01-21
kill -USR1 $(cat /run/php-fpm/php-fpm.pid)
不建议生产环境长期使用
logrotate 是否运行:cat /var/lib/logrotate/logrotate.status
reload php-fpm| 场景 | 推荐方式 |
|---|---|
| PHP-FPM | logrotate + reload |
| 自定义 error_log | logrotate |
| 高并发 | 日志按天 + 压缩 |
| 生产环境 | 不要手动切割 |
如果你愿意,可以告诉我:
我可以帮你写出完全贴合你环境的 logrotate 配置。