Ubuntu PHP日志故障排查
导读: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(如 apache2 与 fpm)可能使用不同的 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_log、error_reporting、log_errors 的实际值。
三 常见故障与修复清单
- 页面空白或只显示 500:优先查看 Apache/Nginx 错误日志 与 PHP-FPM 日志,定位语法/致命错误与池配置问题。
- 日志文件为空或无新日志:
- 确认 log_errors = On 且 error_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-fpm 或 apache2)。
- 配置修改未生效:
- 确认修改的是正确的 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
