Linux下查看 PHP-FPM 错误日志的实用步骤
一、快速定位日志路径
- 查看 PHP-FPM 进程日志配置
- 主配置:/etc/php-fpm.conf
- 进程池配置:/etc/php/{版本号}/fpm/pool.d/www.conf
- 关键指令:error_log(错误日志路径)、access.log(访问日志,可选)、slowlog(慢日志,可选)、log_level(日志级别)
- 发行版常见路径
- Ubuntu/Debian:/var/log/php-fpm/error.log、/var/log/php-fpm/access.log
- CentOS/RHEL:/var/log/php-fpm/error.log 或 /var/log/php7.x-fpm.log
- 其他可能:/var/log/php7-fpm/error.log
- 若未配置 error_log,部分环境会把错误打到系统日志(如 /var/log/syslog),或 Web 服务器错误日志(如 /var/log/nginx/error.log、/var/log/apache2/error.log)。
二、常用查看与检索命令
- 实时查看错误日志
- tail -f /var/log/php-fpm/error.log
- 查看最近 N 行
- tail -n 200 /var/log/php-fpm/error.log
- 过滤关键字(如“error”“WARNING”“segfault”)
- grep -i “error” /var/log/php-fpm/error.log
- 按时间窗口检索(示例:2025-12-24)
- grep “2025-12-24” /var/log/php-fpm/error.log
- 同时跟踪访问日志与错误日志
- tail -f /var/log/php-fpm/*.log
- 若使用 systemd 管理
- 查看服务日志:journalctl -u php-fpm -n 50 --no-pager
- 若错误可能进入系统日志
- grep -i “php-fpm” /var/log/syslog
- 注意:多数日志需要 sudo 权限读取。
三、启动失败或未写入日志时的排查
- 验证配置语法
- php-fpm -t 或 php{版本号}-fpm -t
- 查看服务状态与最近日志
- systemctl status php-fpm
- journalctl -u php-fpm -n 50 --no-pager
- 检查端口或 Socket 占用
- netstat -tulnp | grep 9000
- ls -l /run/php/php{版本号}-fpm.sock
- 检查目录与权限(日志、运行时目录)
- 示例:mkdir -p /run/php-fpm && chown -R www-data:www-data /run/php-fpm && chmod 755 /run/php-fpm
- 日志目录:chown -R www-data:www-data /var/log/php-fpm/
- 重启服务
- systemctl restart php-fpm 或 service php{版本号}-fpm restart。
四、补充定位技巧
- 在 php.ini 中确认 PHP 自身的错误日志指令:error_reporting、log_errors、error_log(注意这与 PHP-FPM 的 error_log 不同,前者记录 PHP 解析/执行错误,后者记录 FPM 进程与管理事件)。
- 使用 phpinfo() 查看实际生效的 error_log 路径与配置(临时创建一个 phpinfo.php 文件访问即可)。
- 开启并检索慢日志(若已配置):tail -f /var/log/php-fpm/slow.log,定位执行时间过长的脚本。