在 CentOS 上,PHP 本身的日志(如 error_log 指定的文件)不会自动轮转,通常需要借助 logrotate 来实现。下面分几种常见情况说明。
查看 php.ini:
php --ini
或
php -i | grep error_log
常见路径:
/var/log/php-fpm/error.log(PHP-FPM)/var/log/php_errors.logstorage/logs/laravel.log)示例:PHP-FPM 日志轮转
sudo vi /etc/logrotate.d/php-fpm
内容示例:
/var/log/php-fpm/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
systemctl reload php-fpm > /dev/null 2>&1 || true
endscript
}
如果是 CentOS 默认用户,通常是
apache或nginx
sudo vi /etc/logrotate.d/laravel
/var/www/html/storage/logs/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
copytruncate
}
copytruncate适合不支持信号重开的程序
手动测试:
sudo logrotate -d /etc/logrotate.d/php-fpm
强制执行:
sudo logrotate -f /etc/logrotate.d/php-fpm
如果是 PHP-FPM pool 日志:
sudo vi /etc/php-fpm.d/www.conf
catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
然后配合上面的 logrotate 即可。
reload php-fpm 或 copytruncatels -Z /var/log/php-fpm/
✅ CentOS 上 PHP 日志轮转标准做法:
如果你能告诉我:
我可以给你一份完全贴合你环境的配置。