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

我使用PHP-FPM运行nginx。 我处理php文件的nginxconfiguration如下所示:

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文件,像这样:

 <?php ech "asd" asd"" ?> 

是的,有一个明显的错误。 当我尝试访问php文件,而不是跟踪语法错误,我总是得到一个HTTP 500内部服务器错误。我尝试使用error_reporting(-1); 但仍然总是返回HTTP 500.我如何让PHP打印确切的错误,而不是返回一个通用的HTTP 500?

尝试在您的php.ini找到以下行:

  display_errors = Off 

然后开启

要发布更完整的答案,我已经使用了display.errors = Off的php.ini的生产版本。 而不是全局打开它,我现在要做的是,对于需要报错的文件,我使用ini_set('display_errors', 'On'); 在文件的开头。

此外,我遇到了这个问题,我在php.ini设置display_errors = Off ,但它不起作用。 然后,我在php-fpm.conf找到了php[display_errors]=off ,它将覆盖php.ini的值,它可以工作。

显示错误只会影响错误打印输出的事实。

如果您打开了日志错误,则日志中的错误仍然会丢失,除非显示是关闭的,这不是预期的行为。

预期的行为是如果日志是打开的,在那里发现错误。 如果显示打开,则在屏幕/输出上发现错误。 如果两者都在erros上都可以找到。

目前的版本有一个缺陷的错误。

对于Ubuntu 12.10,在php-fpm-pool-config文件中:

 php_flag[display_errors] = on 

在php.ini文件中:

 display_errors = On