Ubuntu中解析PHP日志的实用步骤
一 定位日志文件
| 日志类型 | 常见路径 | 定位或查看命令 |
|---|---|---|
| PHP错误日志(php.ini) | /etc/php/{版本}/{sapi}/php.ini 中的 error_log | `php -i |
| PHP-FPM日志 | /var/log/php{版本}-fpm.log(如:php7.4-fpm.log) | sudo tail -f /var/log/php7.4-fpm.log |
| Apache错误日志 | /var/log/apache2/error.log | sudo tail -f /var/log/apache2/error.log |
| Nginx错误日志 | /var/log/nginx/error.log | sudo tail -f /var/log/nginx/error.log |
说明:{版本}为你的PHP版本号(如7.4、8.1),{sapi}为fpm或apache2。若未显式配置error_log,PHP错误可能写入Web服务器错误日志或系统日志。
二 快速查看与过滤
sudo tail -f /var/log/php7.4-fpm.logsudo grep -i "error\|exception\|fatal" /var/log/php7.4-fpm.loggrep -E 'error|warning|notice' /var/log/php7.4-fpm.log | wc -lgrep -n -A5 -B5 "SQLSTATE\[42S22\]" /var/log/php7.4-fpm.logsudo tail -f /var/log/nginx/error.log | grep -i php三 解析日志格式与关键信息
[01-Sep-2023 12:34:56] PHP Fatal error: Uncaught Error: Call to undefined function foo() in /var/www/my_script.php:12 Stack trace: #0 /var/www/my_script.php(12): foo() #1 {main}四 配置与重启使生效
error_reporting = E_ALLlog_errors = Onerror_log = /var/log/php_errors.log(或保留默认路径)sudo systemctl restart apache2sudo systemctl restart php7.4-fpm(将版本替换为你的实际版本)display_errors = Off,避免敏感信息暴露;开发环境可临时开启便于调试。五 进阶分析与可视化
cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10sudo apt-get install logwatch,生成周期性日志报告sudo apt-get install goaccess,对访问日志做实时分析与报表