定位日志文件与确认来源
| 组件/场景 | 日志类型 | 典型路径 | 说明 |
|---|---|---|---|
| PHP-FPM | 错误日志 | /var/log/php-fpm/error.log | 运行时错误、警告 |
| PHP-FPM | 访问日志 | /var/log/php-fpm/access.log | 请求记录(若启用) |
| PHP-FPM | 慢执行日志 | 由 slowlog 配置项指定 | 执行时间超过阈值的脚本 |
| Apache + mod_php | 错误日志 | /var/log/httpd/error_log | PHP 错误通常写入此处 |
| Apache + mod_php | 访问日志 | /var/log/httpd/access_log | HTTP 请求记录 |
| Nginx + PHP-FPM | 错误日志 | /var/log/nginx/error.log | 与上游 PHP-FPM 交互错误 |
| Nginx + PHP-FPM | 访问日志 | /var/log/nginx/access.log | HTTP 请求记录 |
journalctl -u php-fpm 或 journalctl -u httpd。以上路径与方式适用于 CentOS 常见部署。快速筛选命令
tail -f /var/log/php-fpm/error.log | grep -i "error\|fatal\|warning"tail -f /var/log/httpd/error_log | grep -i "php"tail -f /var/log/nginx/error.log | grep -i "php\|upstream"awk '/2025-11-29 10:00:00/,/2025-11-29 11:00:00/' /var/log/php-fpm/error.loggrep -C 5 "keyword" /var/log/httpd/error_loggrep '192.168.1.100' /var/log/nginx/access.loggrep '/api/login' /var/log/nginx/access.log | awk '$9 >= 500'awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10grep -i "error" /var/log/php-fpm/error.log | cut -d' ' -f1-2 | uniq -c按场景给出可直接使用的筛选命令
grep -E "PHP (Fatal|Parse) error" /var/log/php-fpm/error.log -A2 -B2slowlog 已开启,直接按时间阈值筛选,例如阈值 5 秒:awk '$4 > 5 {print}' /path/to/php-fpm.slow.loggrep '/checkout.php' /var/log/nginx/access.log | awk '{print $1,$7,$9}' 与 grep -i "checkout.php" /var/log/php-fpm/error.log 联合排查awk '{s[$9]++; total++;} END {for (k in s) printf "%s: %d (%.2f%%)\n", k, s[k], s[k]/total*100}' /var/log/nginx/access.logtail -f /var/log/nginx/access.log | grep --line-buffered '/api/pay' | awk '$9 >= 400 {print "\033[31m" $0 "\033[0m"}'grep 'login' /var/log/php-fpm/access.log | awk '{print $1,$2,$3,$6}'确保日志可被筛选到
display_errors = Off):
error_reporting = E_ALLdisplay_errors = Offlog_errors = Onerror_log = /var/log/php-fpm/error.logsystemctl restart php-fpmslowlog = /var/log/php-fpm/www-slow.logrequest_slowlog_timeout = 5ssystemctl restart php-fpm日志轮转与长期分析