首页主机资讯Ubuntu PHP日志故障排查

Ubuntu PHP日志故障排查

时间2025-11-14 14:46:03发布访客分类主机资讯浏览517
导读:Ubuntu PHP日志故障排查实战手册 一 快速定位日志位置 先确认 PHP 配置与 SAPI(Apache 模块、PHP-FPM、CLI)对应的配置文件与日志路径,避免只看一处。 常用日志路径与命令一览: 组件/SAPI 常见...

Ubuntu PHP日志故障排查实战手册

一 快速定位日志位置

  • 先确认 PHP 配置与 SAPI(Apache 模块、PHP-FPM、CLI)对应的配置文件与日志路径,避免只看一处。
  • 常用日志路径与命令一览:
组件/SAPI 常见日志路径 快速查看命令
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-FPM 主日志 /var/log/php-fpm.log/var/log/php7.x-fpm.log sudo tail -f /var/log/php7.4-fpm.log
PHP 自定义错误日志 由 php.ini 的 error_log 指定,如 /var/log/php_errors.log sudo tail -f /var/log/php_errors.log
CLI 错误输出 终端标准错误或被重定向 php your_script.php 2> & 1
  • 查找当前生效的 php.ini 与 error_log:
    • 查看加载的配置文件:php -i | grep ‘Loaded Configuration File’
    • 直接检索配置项:grep -i error_log /etc/php//fpm/php.ini /etc/php//apache2/php.ini
    • 注意:不同 SAPI(如 apache2fpm)可能使用不同的 php.ini。

二 正确开启与调整日志级别

  • 编辑对应 SAPI 的 php.ini(如 /etc/php/7.4/apache2/php.ini/etc/php/7.4/fpm/php.ini):
    • 开启日志与显示策略(生产建议只写入文件,不显示到页面):
      • error_reporting = E_ALL
      • log_errors = On
      • display_errors = Off
    • 指定日志文件(确保目录可写,建议专用目录如 /var/log/php/):
      • error_log = /var/log/php_errors.log
  • 若使用 PHP-FPM,还需在 /etc/php/7.x/fpm/pool.d/www.conf 中确保进程输出被捕获(便于记录脚本错误):
    • catch_workers_output = yes
  • 使配置生效:
    • Apache:sudo systemctl restart apache2
    • PHP-FPM:sudo systemctl restart php7.4-fpm
    • Nginx:sudo systemctl restart nginx
  • 验证:创建一个临时探针文件 /var/www/html/info.php
    • 访问该文件,在页面中确认 error_logerror_reportinglog_errors 的实际值。

三 常见故障与修复清单

  • 页面空白或只显示 500:优先查看 Apache/Nginx 错误日志PHP-FPM 日志,定位语法/致命错误与池配置问题。
  • 日志文件为空或无新日志:
    • 确认 log_errors = Onerror_log 路径有效;检查目录权限(如 /var/log/php/www-data 可写)。
    • 对于 FPM,确认 catch_workers_output = yes,否则某些输出不会进入主日志。
  • 权限与所有权问题:
    • Web 目录与日志目录建议归属 www-data:www-data,权限 755/644(按最小权限原则调整)。
    • 示例:sudo chown -R www-data:www-data /var/www/html;sudo chmod -R 755 /var/www/html
  • 扩展缺失导致报错(如调用未定义函数):
    • 安装缺失扩展(示例):sudo apt-get install php-mbstring
    • 安装后重启对应服务(如 php7.4-fpmapache2)。
  • 配置修改未生效:
    • 确认修改的是正确的 SAPI 配置(apache2/fpm/cli),并重启相应服务。

四 高效排查命令与脚本

  • 实时跟踪多日志源(多窗口或 tmux 分屏):
    • sudo tail -f /var/log/apache2/error.log /var/log/nginx/error.log /var/log/php7.4-fpm.log
  • 关键字检索(定位首次报错或特定模块问题):
    • sudo grep -i “error|fatal|exception” /var/log/php7.4-fpm.log
    • sudo grep -i “call to undefined function” /var/log/apache2/error.log
  • 快速确认加载的配置与日志路径:
    • php -i | grep -E “Loaded Configuration File|error_log”
  • 在代码中主动写入日志(辅助定位框架/业务层问题):
    • error_log(“业务步骤失败,用户ID=” . $uid, 0); // 0 表示使用 php.ini 的 error_log
  • 安全提示:排查完成后,生产环境请保持 display_errors = Off,仅保留 log_errors = On,避免敏感信息外泄。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu PHP日志故障排查
本文地址: https://pptw.com/jishu/748047.html
dmesg日志中的磁盘I/O问题如何排查 如何过滤Ubuntu PHP日志

游客 回复需填写必要信息