PHP FPM返回所有PHP错误的HTTP 500
我正在用PHP-FPM运行nginx。我处理php文件的nginx配置如下所示: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
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
。