温馨提示×

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_loglog_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-fpmsudo service php-fpm restart
    • Apache:重启服务,如 sudo systemctl restart apache2sudo 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-datanginxapache)。必要时使用 sudo 查看,例如 sudo tail -f /var/log/php-fpm.log
  • 无日志或路径为空:
    • 确认 log_errors = Onerror_log 路径有效;若路径不存在需先创建并设置权限。
    • 检查运行的是 PHP-FPM 还是 mod_php/CLI,它们可能读取不同的 php.ini
    • phpinfo()php -i 输出中核对实际生效的 error_logerror_reporting 值。

0