PHP错误日志批量排查网站白屏502访问故障完整流程

PHP错误日志批量排查网站白屏502访问故障完整流程

网站突然白屏或返回 502 Bad Gateway,对新手站长来说最头疼。
绝大多数情况是 PHP-FPM 崩溃、内存耗尽或代码错误引起的。
本文带你从零开始,用 PHP 错误日志 逐站筛查,定位问题根源,并给出修复思路。

排查前先确认两件事

  1. 你能登录服务器吗? 至少要有 SSH 密码或密钥,或者能进宝塔面板/服务器管理后台。
  2. 网站是 PHP 程序吗? 如果用了 WordPress、Discuz、Laravel 等,日志排查特别有效。502 白屏一般来自 PHP 进程挂掉或配置错误。

第一步:确保各站已经开启错误日志

很多服务器默认关闭 PHP 错误输出。
我们要先让错误“写出来”。

方法一:修改 php.ini(全局生效)

找到 php.ini 文件位置(常见路径 /etc/php.ini/etc/php/7.x/fpm/php.ini),修改或确认以下参数:

display_errors = Off
log_errors = On
error_log = /var/log/php-fpm/error.log
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

注意:生产环境建议 display_errors = Off,避免错误直接暴露给用户。

方法二:宝塔面板一键开启

宝塔用户更简单:登录面板 → 网站 → 选择站点 → 设置 → 伪静态/配置 → 在“PHP 配置”中开启“错误日志”,路径自动生成。
每个站点可独立设置。

第二步:批量查看所有站点的 PHP 错误日志

场景一:只有一个站点

直接查看全局日志:

# 如果日志路径是默认的
tail -f /var/log/php-fpm/error.log

如果要看指定站点的日志(宝塔一般按日期拆分):

# 宝塔站点日志位置
tail -f /www/wwwlogs/你的域名.error.log

场景二:服务器上有几十个站点

用一行命令扫描所有错误日志:

# 找到所有 .error.log 文件并显示最后 20 行
grep -rn "Fatal error\|PHP Parse error\|PHP Warning" /www/wwwlogs/*.error.log 2>/dev/null | tail -50

如果日志名称不统一,可以用 find 结合 xargs

find /www/wwwlogs -name "*.error.log" -exec grep -H -i "error\|fatal" {} \;

输出解读:常见关键词包括 PHP Fatal error(致命错误)、Allowed memory size(内存超限)、Uncaught exception(未捕获异常)。

第三步:根据日志内容修复白屏/502

常见错误及对策

| 日志关键词 | 可能原因 | 修复方法 |
|-----------|----------|----------|
| PHP Fatal error: Allowed memory size of XXX bytes exhausted | 单脚本内存不足 | 修改 php.ini 中 memory_limit 为 256M 或更高,重启 PHP-FPM |
| PHP Parse error: syntax error, unexpected T_STRING | 代码语法错误 | 检查最近修改的 PHP 文件,用 php -l 文件名.php 验证语法 |
| PHP Fatal error: Uncaught Error: Class 'XXX' not found | 缺少类文件 | 检查自动加载配置或手动引入 |
| [error] 209#0: *12345 connect() failed (111: Connection refused) | PHP-FPM 没启动 | 重启 PHP-FPM:systemctl restart php-fpm(或宝塔面板 → 服务 → PHP 重启) |
| [error] 209#0: *12345 connect() timed out | PHP 处理超时 | 扩大 request_terminate_timeoutmax_execution_time |

批量修复技巧

假如所有站点都报 Allowed memory size,直接修改 php.ini 全局值:

sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php.ini
systemctl restart php-fpm

如果只有个别站,优先改站点同名 .user.ini 文件(宝塔网站目录下)。

高频问题与避坑说明

Q1:日志文件为空怎么办?

检查权限:ls -la /var/log/php-fpm/,确保用户 wwwnginx 有写权限。
也可以手动创建并授权:

touch /var/log/php-fpm/error.log
chown www:www /var/log/php-fpm/error.log

Q2:开启日志后网站性能会下降吗?

日志写入会产生少量 I/O,生产环境建议只记录 error 级别,关闭 display_errors
排查结束后可以恢复 error_reporting 为更严格的值。

Q3:改完配置还是 502?

很可能 Nginx 跟 PHP-FPM 之间的 socket 或端口不对。
检查 Nginx 配置中的 fastcgi_pass 是否与你启用的 PHP-FPM 版本一致。
例如宝塔默认用 Unix socket /tmp/php-cgi-74.sock,但你的 PHP 版本是 8.0,就会报错。

验证修复效果

  1. 先清空错误日志:> /var/log/php-fpm/error.log
  2. 刷新白屏页面,重复操作两三次。
  3. 再次查看日志:tail -20 /var/log/php-fpm/error.log,如果无新增错误,访问恢复正常,说明问题已解决。
  4. 如果是全局配置问题,务必在验证后恢复 display_errors = Off

总结

批量排查网站白屏 502 的核心武器就是 PHP 错误日志
按本文步骤先开启日志、扫一遍所有站点、根据关键词修,基本能解决 80% 以上的故障。
遇到复杂情况(如扩展冲突、SELinux 拦截),可以结合 Nginx 错误日志(/var/log/nginx/error.log)交叉对比。

如果你正在处理 PHP 错误日志批量排查网站白屏 502 访问故障完整流程,建议先按以上步骤完整执行,再根据自己环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
宝塔面板手机APP远程重启站点与AI中转服务操作
下一篇
登录日志审计脚本筛查异常爆破账号及时拦截告警
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意