PHP错误日志在Linux如何查看疑问
小樊
34
2025-11-22 15:40:36
Linux 下查看 PHP 错误日志的实用指南
一 常见日志路径与定位方式
- 常见路径一览(不同发行版与 SAPI 会有差异):
- PHP-FPM:常见为 /var/log/php-fpm.log 或 /var/log/php-fpm/error.log,部分系统按版本命名如 /var/log/php7.4-fpm.log。
- Apache:常见为 /var/log/apache2/error.log(Debian/Ubuntu),或 /var/log/httpd/error_log(CentOS/RHEL)。
- Nginx:常见为 /var/log/nginx/error.log(PHP 语法/启动错误常在此,业务错误也可能由 FPM 记录)。
- 自定义路径:可能在 /var/log/php_errors.log 或 /var/log/php/error.log 等,取决于 php.ini 的 error_log 指令。
- 系统日志:若未配置专用日志,可能写入 /var/log/syslog(Debian/Ubuntu)或 /var/log/messages(CentOS/RHEL)。
- 快速定位命令:
- 使用 phpinfo:创建文件 info.php 内容为 ,访问后搜索 error_log 项。
- 命令行检索:执行 php -i | grep -i error_log(CLI SAPI 的配置);或 echo ‘’ | php 2>&1 | grep -i error_log。
- 直接查看配置文件:如 /etc/php.ini、/etc/php/*/fpm/php.ini、/etc/php/*/cli/php.ini 中的 error_log 与 log_errors 项。
二 查看与分析日志的常用命令
- 实时查看最新日志:
- tail -f /var/log/php-fpm.log
- tail -f /var/log/nginx/error.log
- tail -f /var/log/apache2/error.log
- 关键字筛选与统计:
- 筛选包含 error 的行:grep -i “error” /var/log/php-fpm.log
- 统计错误级别数量:cat /var/log/php/error.log | grep -E ‘error|warning|notice’ | wc -l
- 按时间提取并统计每日错误数(示例思路):
- awk ‘/error/ {print $1, $2, $3}’ /var/log/php-fpm.log | sed ‘s/:/ /g’ | awk ‘{print $1}’ | sort | uniq -c
- 分页查看大文件:less /var/log/php-fpm.log(支持上下翻页与搜索)。
三 确保错误日志已开启与正确配置
- 编辑相应 php.ini(如 /etc/php/*/fpm/php.ini 或 /etc/php.ini):
- 开启日志:log_errors = On
- 设置报告级别:error_reporting = E_ALL
- 指定日志文件:error_log = /var/log/php_errors.log(路径需可写,且目录权限正确)
- 生产建议:display_errors = Off(避免泄露敏感信息到页面)
- 生效方式:
- PHP-FPM:重启服务,如 sudo systemctl restart php-fpm 或 sudo service php-fpm restart
- Apache:重启服务,如 sudo systemctl restart apache2 或 sudo systemctl restart httpd
- CLI 与 Web 环境可能使用不同 php.ini,需分别确认。
四 发行版与运行环境差异速查
- Ubuntu/Debian:
- Web 日志:/var/log/apache2/error.log、/var/log/nginx/error.log
- PHP 日志:/var/log/php/error.log 或 /var/log/php7.x-fpm.log
- CentOS/RHEL:
- Web 日志:/var/log/httpd/error_log、/var/log/nginx/error.log
- PHP-FPM 日志:/var/log/php-fpm/error.log 或 /var/log/php7.4-fpm.log
- 若未配置专用日志,错误可能进入系统日志:/var/log/syslog(Debian/Ubuntu)、/var/log/messages(CentOS/RHEL)。
五 权限与排错建议
- 权限问题:日志目录与文件需对 Web/PHP-FPM 运行用户可写(如 www-data、nginx、apache)。必要时使用 sudo 查看,例如 sudo tail -f /var/log/php-fpm.log。
- 无日志或路径为空:
- 确认 log_errors = On 且 error_log 路径有效;若路径不存在需先创建并设置权限。
- 检查运行的是 PHP-FPM 还是 mod_php/CLI,它们可能读取不同的 php.ini。
- 在 phpinfo() 或 php -i 输出中核对实际生效的 error_log 与 error_reporting 值。