CentOS 环境下 PHP 日志管理
一 日志类型与定位
grep -n "^error_log\|^log_errors" /etc/php.ini /etc/php.d/*.inigrep -n "error_log\|access.log" /etc/php-fpm.conf /etc/php-fpm.d/*.confgrep -n "ErrorLog\|CustomLog" /etc/httpd/conf/httpd.conf /etc/nginx/nginx.conf。二 核心配置步骤
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICTlog_errors = On,error_log = /var/log/php_errors.logdisplay_errors = Off(避免泄露敏感信息)。php_admin_flag[log_errors] = on,php_admin_value[error_log] = /var/log/php-fpm/error.logcatch_workers_output = yesaccess.log = /var/log/php-fpm/access.logerror_log /var/log/nginx/error.log warn; access_log /var/log/nginx/access.log main buffer=32k flush=300s;LogLevel warn,ErrorLog /var/log/httpd/error_log,CustomLog /var/log/httpd/access_log combined。三 日志轮转与清理
/var/log/php-fpm/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root adm
sharedscripts
postrotate
if [ -f /var/run/php-fpm/php-fpm.pid ]; then
kill -USR2 `cat /var/run/php-fpm/php-fpm.pid`
fi
endscript
}
rotate 7 保留 7 份,compress 压缩旧日志,postrotate 向 php-fpm 发送 USR2 触发日志重新打开。/var/log/php_errors.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root adm
}
logrotate -f /etc/logrotate.d/php-fpm,logrotate -f /etc/logrotate.d/phprotate N 控制保留份数;如确需定时清理,可用 cron:
0 0 * * * find /var/log/php* -type f -name "*.gz" -mtime +7 -delete(删除 7 天前的压缩日志)。四 监控与最佳实践
tail -f /var/log/php_errors.log,tail -f /var/log/php-fpm/error.log