PHP FPM返回所有PHP错误的HTTP 500

PHP FPM返回所有PHP错误的HTTP 500,php,nginx,error-reporting,Php,Nginx,Error Reporting,我正在用PHP-FPM运行nginx。我处理php文件的nginx配置如下所示: location ~ \.php$ { set $php_root /home/me/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_scrip

我正在用PHP-FPM运行nginx。我处理php文件的nginx配置如下所示:

location  ~ \.php$ {
            set $php_root /home/me/www;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $php_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
        }
<?php
     ech "asd"
     asd""
?>
现在,我有一个简单的php文件,如下所示:

location  ~ \.php$ {
            set $php_root /home/me/www;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $php_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
        }
<?php
     ech "asd"
     asd""
?>


是的,有一个明显的错误。当我尝试访问php文件时,我总是得到一个HTTP 500内部服务器错误,而不是跟踪语法错误但它始终返回HTTP 500。如何让PHP打印准确的错误而不是返回通用HTTP 500?

尝试在
PHP.ini
中找到以下行:

 display_errors = Off

然后打开

发布一个更完整的答案,我使用了一个php.ini的生产版本,它的display_errors=Off。我现在做的不是全局打开它,而是对需要错误报告的文件使用
ini_set('display_errors','on')在文件的开头。

我也遇到了这个问题,我在
php.ini
中设置了
display\u errors=Off
,但它不起作用。然后我在
php fpm.conf
中找到了
php[display_errors]=off
,它将覆盖
php.ini
的值,并且可以正常工作。

显示错误只会影响是否将错误打印到输出

如果已打开日志错误,则日志中仍将缺少错误,除非关闭显示,这不是预期的行为

预期的行为是,如果登录,则会在那里发现错误。如果显示打开,则在屏幕/输出上发现错误。如果两者都在,则在两者上都会发现错误


当前版本有一个错误,它将失去这个功能。

对于Ubuntu 12.10,在php fpm池配置文件中:

php_flag[display_errors] = on
在php.ini文件中:

display_errors = On

如果您从Remi repo php72安装。它是apache的默认用户和组|

转到www.conf文件,找到/etc/opt/remi/php72/php-fpm.d/www.conf

改变

user=nginx
group=nginx
在重新启动php fpm之前

systemctl restart php72-php-fpm

CENTOS REMI PHP7.2

您可以通过以下方式显示错误:转到php.ini并找到
display\u errors
,您应该看到
display\u errors=Off
,只需将
Off
替换为
On
,重新启动php并再次运行。

如果文件没有错误,您是否会得到正确的响应代码(HTTP 200 OK)?是,如果文件没有错误,我会得到HTTP 200 OK。记录错误通常比显示错误要好。谢谢!我使用的是php.ini的生产版本,其中display_errors处于关闭状态。我使用的是php Fastcgi脚本,所以最近我改为php fpm。我没有注意到php.ini更改为FPM的版本。他们的版本已禁用dispaly_errors=Off,因此当发生错误时,我的所有页面开始显示为空白!不要忘记在那之后重置php fpm。(sudo服务php-fpm restart)也不要忘记将
error_level
更改为
E_ALL
,如果您没有将php-fpm作为服务来重新启动它,只需执行
sudo/etc/init.d/php5-fpm restart
您知道php.net中跟踪此错误的错误通知单吗?你能链接到它吗?问题是,根据文档,如果发生致命错误,它将不起作用。@srcspider不是吗?甚至会指出致命错误。您所要做的就是确保将这个
ini\u集(“display\u errors”,“On”)
放在您考虑的范围的最顶端。
php.ini
与配置无关,如果您使用的是
php fpm
,那么您需要修改
php fpm.conf