PHP错误日志排查教程指南实用

为什么你的 PHP 网站突然白屏了?

刚搭建的 WordPress 或个人网站突然白屏,或者访问时直接弹出 500 内部服务器错误,很多人第一反应是“完了,网站废了”。
其实大多数情况下,只要找到 PHP错误日志,就能立刻知道问题出在哪一行代码。
本文会一步一步告诉你如何开启、查看并读懂这些日志,不需要你有编程基础,跟着操作就能自己排错。

如果你用的是宝塔面板、LNMP 或者纯手工配置的环境,下面的步骤都适用。

第一步:找到 PHP 配置文件并开启日志

PHP 的错误日志记录功能默认是关闭的,所以第一步就是把它打开。

1.1 找到 php.ini 文件

不同的服务器环境,php.ini 位置可能不同:

  • 宝塔面板:在左侧菜单“软件商店” → 你使用的 PHP 版本(如 PHP 7.4) → “设置” → “配置文件” → 直接编辑 php.ini
  • LNMP 一键包:通常在 /usr/local/php/etc/php.ini
  • 自行编译安装:通过 php --ini 命令查看加载的配置文件路径。

1.2 修改关键配置项

用文本编辑器打开 php.ini,找到下面几行(如果没有就手动添加),修改或确认以下值:

error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
display_errors = Off
  • error_reporting:设为 E_ALL 表示记录所有级别的错误。
  • log_errors:开启错误日志记录。
  • error_log:日志文件的保存路径。宝塔面板建议放在 /www/wwwlogs/ 下,例如 /www/wwwlogs/php_errors.log,确保目录可写。
  • display_errors:生产环境务必设为 Off,否则错误信息会直接显示在网页上,暴露敏感信息。

1.3 重启 PHP 服务

修改后必须重启 PHP 才能生效。

  • 宝塔面板:在“软件商店”对应 PHP 版本右侧点击“重启”。
  • 命令行systemctl restart php-fpm(如果服务名是 php-fpm,也可能是 php7.4-fpm)。

第二步:查看 PHP 错误日志

2.1 实时查看最新日志(推荐)

登录服务器 SSH,使用 tail 命令:

tail -f /var/log/php_errors.log

然后刷新一次出错的网页,终端会立即打印最新的错误信息。
Ctrl + C 退出实时模式。

2.2 使用宝塔面板查看

宝塔用户可以直接在左侧“日志” → “PHP错误日志”中查看,也可以进入网站设置 → “网站日志” → 选择对应 PHP 版本日志。

2.3 没有日志怎么办?

如果日志文件为空,请检查:

  • error_log 指定的目录是否存在且 PHP 用户(如 www)有写入权限。
  • 确认刚重启过 PHP。
  • 临时在 php.ini 中添加 display_errors = On 并重启,访问出错页面看能否直接看到错误,但生产环境测试完一定要改回 Off

第三步:解读常见的 PHP 错误类型

看到日志后,重点看行号错误级别

3.1 Parse error(解析错误)

PHP Parse error: syntax error, unexpected '}' in /www/wwwroot/test.php on line 10

通常是因为代码遗漏了分号、括号不匹配。
找到第10行附近检查语法。

3.2 Fatal error(致命错误)

PHP Fatal error: Uncaught Error: Call to undefined function wp_head() in /www/wp-content/themes/functions.php:15

表示调用了不存在的函数或类,常见于插件、主题冲突。

3.3 Warning(警告)

PHP Warning: file_get_contents(http://example.com): failed to open stream...

警告不会中断程序,但通常提示配置或外部资源问题,比如 PHP 远程连接被禁用。

避坑指南:几个新手容易忽略的点

  • 日志文件权限:宝塔环境下,日志路径建议使用 /www/wwwlogs/,并确保 PHP 用户(www)有写入权限。如果日志文件一直空白,可以手动创建一个空文件并设置为 666 权限:chmod 666 /www/wwwlogs/php_errors.log
  • 日志轮转:不设置轮转的话,日志文件会越来越大,甚至撑爆磁盘。宝塔面板会自动处理,手动环境可以用 logrotate 定期切割。
  • 生产环境严禁 display_errors:开启后错误会直接输出到页面,可能泄露数据库密码、服务器路径等敏感信息。测试完一定记得关掉

验证:制造一个简单错误确认日志生效

写一个最简单的测试文件,比如在网站根目录创建 test.php,内容如下:

访问 http://yourdomain.com/test.php(页面不会显示任何信息,因为 display_errors 已关)。
然后查看日志文件,应该会看到:

PHP Notice: Undefined variable: undefined_var in /www/wwwroot/test.php on line 2

这说明日志已正常工作。记得删除测试文件,避免被别人利用。

高频问题解答

Q:为什么我的日志里什么都没有?

A:检查 php.ini 中 log_errors 是否为 On,error_log 路径是否正确,目录是否可写,以及是否重启了 PHP。

Q:错误日志里出现大量重复信息怎么办?

A:可以利用 logrotate 设置日志轮转,或者临时提高错误报告级别过滤掉 Notice 级别信息。

Q:日志显示文件不存在但文件明明存在?

A:检查 PHP 的 open_basedir 限制是否限制了路径。
可以在 php.ini 中注释掉该选项或添加允许路径。

总结

现在你已经掌握了 PHP错误日志排查 的核心步骤:找到配置文件、开启日志、查看日志、读懂错误类型。
下次网站出问题,不要盲目删插件,先看日志。
如果你正在处理 PHP 错误日志排查,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
坚持下去,你很快就能独立解决大部分服务器排错问题。

分享到:
上一篇
MySQL慢日志分析实战:三步定位慢查询瓶颈
下一篇
零基础网站代码压缩教程:让网页加载速度翻倍的实操方法
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意