You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下PHP5.6-FPM错误无法在浏览器显示的问题求助

解决PHP5.6-FPM错误无法在浏览器显示的问题

我之前也碰到过完全一样的情况——改了一堆配置,结果错误还是只藏在Nginx日志里,浏览器连个报错影子都看不到。给你几个亲测有效的排查和解决方向:

1. 先检查Nginx的站点配置,别让它拦截PHP错误输出

Nginx默认可能会把PHP的错误输出给吞掉,得确保你的站点配置里的PHP处理块有正确的参数设置。打开你的Nginx站点配置文件(一般在/etc/nginx/sites-available/或者/etc/nginx/conf.d/目录下),找到location ~ \.php$的块,确认里面有这行关键配置:

location ~ \.php$ {
    fastcgi_pass unix:/run/php/php5.6-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    # 必须加上这行,强制让PHP在浏览器输出错误
    fastcgi_param PHP_VALUE "display_errors=on";
    include fastcgi_params;
}

改完之后一定要重启Nginx生效:

sudo systemctl restart nginx

2. 确认PHP-FPM真的加载了你修改的配置,并且已经重启

很多时候我们改了配置但忘了重启服务,或者FPM加载的是其他路径的配置文件。先执行这个命令验证配置路径:

sudo php5.6-fpm -t

它会输出当前FPM加载的php.ini和池配置路径,确认是不是你修改的/etc/php/5.6/fpm/php.ini和/etc/php/5.6/fpm/pool.d/www.conf。然后务必重启PHP-FPM:

sudo systemctl restart php5.6-fpm

3. 排查脚本/框架是否手动关闭了错误显示

有些框架或者自定义脚本会在开头用代码强行关闭错误输出,比如error_reporting(0);或者ini_set('display_errors', 'off');。你可以写个极简的测试脚本,强制开启错误显示来验证:

<?php
// 强制开启错误输出
error_reporting(E_ALL);
ini_set('display_errors', '1');
// 故意写个错误代码测试
echo $undefined_variable;
?>

访问这个脚本,如果能看到错误,说明是你业务代码里的设置覆盖了全局配置。

4. 检查Nginx的错误页面配置是否隐藏了PHP错误

如果Nginx配置了error_page 500 502 503 504 /50x.html;,当PHP抛出致命错误时,Nginx会直接跳转到50x页面,而不是显示PHP的原始错误信息。可以临时注释掉这行配置,重启Nginx后再测试。

5. 确认PHP-FPM和Nginx的运行用户一致

如果PHP-FPM的运行用户(www.conf里的user和group)和Nginx的运行用户不一样,可能会因为权限问题导致错误输出被拦截。一般Nginx默认用www-data,那www.conf里也要设置:

user = www-data
group = www-data

改完记得重启PHP-FPM。


内容的提问来源于stack exchange,提问作者Akhmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:14:51