PHP错误日志排查网站故障:零基础也能快速定位问题
很多网站突然白屏、500错误或者功能异常时,最先想到的就是看PHP错误日志。
它相当于PHP运行时的“黑匣子”,记录了每一条代码报错和警告信息。
对于零基础的用户来说,只要知道怎么打开、怎么看,就能自己找出大部分故障原因,不用每次求助技术。
第一步:检查是否开启了PHP错误日志
如果你的服务器是宝塔面板,登录后台后点击左侧“软件商店”——找到已安装的PHP版本(比如PHP 7.4或8.0)——点击“设置”——在“配置文件”中找到 display_errors 和 log_errors 两个参数。生产环境建议关闭 display_errors(设为Off),避免错误信息直接暴露给访客;
同时必须开启 log_errors(设为On),并指定 error_log 路径,例如 /www/wwwlogs/php_errors.log。
如果是手动配置的服务器,打开 php.ini 文件(一般位于 /usr/local/php/etc/ 或 /etc/),确保以下内容未被注释:
log_errors = On
error_log = /var/log/php_errors.log
display_errors = Off
修改后重启PHP服务(宝塔面板在PHP设置页面点“重启”,命令行执行 systemctl restart php-fpm 或 service php-fpm restart)。
第二步:找到错误日志并实时查看
日志文件路径取决于上一步的配置。
常用路径包括 /var/log/php_errors.log、/www/wwwlogs/php_errors.log 或网站目录下的 error.log。
如果你不确定,可以在网站根目录新建一个 info.php,写入 ,访问该文件,搜索“error_log”就能看到实际路径。
php phpinfo(); ?
>
查看最新错误最直接的方法是使用 tail 命令:tail -f /var/log/php_errors.log。
这条命令会持续输出新增的错误日志,方便你边操作边观察。
如果只想看最后50行,可以用 tail -n 50 /var/log/php_errors.log。
第三步:看懂常见的PHP错误信息
日志里每一行通常包含时间戳、错误级别和错误描述。
零基础用户重点关注这几类:Parse error(语法解析错误)—— 一般提示“unexpected”和行号,去对应文件的指定行检查少写了分号或括号;Fatal error(致命错误)—— 如“Call to undefined function”,说明调用了不存在的函数,通常是扩展没安装或函数名写错;Warning(警告)—— 不会直接让网站崩溃,但可能引起功能异常,比如“file_get_contents failed to open stream”,常见于远程请求超时或路径不对。
记住一个原则:从上往下看最新的一条错误,先解决第一个错误,后面的错误往往是由它引发的。
第四步:避坑指南(新手最容易翻车的地方)
坑一:修改 php.ini 后忘记重启。
很多用户改了配置发现日志没生成,多半是PHP-FPM没重启,新配置没生效。
宝塔面板在PHP设置页点“重启”即可,命令行用 systemctl restart php-fpm。坑二:日志文件权限不足。
如果 error_log 指定的目录PHP用户无权写入,日志会默默丢失。
宝塔面板一般自动处理,手动配置时建议 chmod 644 /var/log/php_errors.log 并确保归属为 www:www(或对应运行用户)。坑三:生产环境打开了 display_errors。
这会把数据库密码、文件路径等敏感信息暴露给前端用户,非常危险。
一定要确认 display_errors = Off。
第五步:验证日志是否真正生效
完成配置后,故意制造一个简单错误来测试。
在网站根目录新建 test_error.php,写入 ,访问这个文件。
php echo $undefined_var; ?
>
如果 display_errors 已关闭,页面上应该是空白或500状态码。
然后查看错误日志(用 tail -f),应该看到类似 PHP Notice: Undefined variable: undefined_var in /www/wwwroot/test_error.php on line 2 的记录。
如果看到了,说明你的PHP错误日志已经成功开启并正常记录,以后任何网站出错都能从这里找到线索。
记得删掉测试文件。