Nginx Php-fpm在任何地方都没有记录500错误

Gui*_*big 8 php nginx

nginx或php-fpm也没有报告错误500输出,实际上500响应是在访问日志上而不是在nginx错误日志上.该脚本在我的开发环境中正常运行.

nginx version: nginx/1.6.2  
PHP 5.5.19 (fpm-fcgi)
Run Code Online (Sandbox Code Playgroud)

试过这个

catch_workers_output = 1
Run Code Online (Sandbox Code Playgroud)

重启了一切,仍然无法正常工作

nginx访问日志显示:

x.x.x.x - - [12/Dec/2014:19:25:08 -0200] "GET /merchant/customer/mobile/data?sEcho=1&iColumns=3&sColumns=%2C%2C&iDisplayStart=0&iDisplayLength=10&mDataProp_0=0&sSearch_0=&bRegex_0=false&bSearchable_0=true&mDataProp_1=1&sSearch_1=&bRegex_1=false&bSearchable_1=true&mDataProp_2=2&sSearch_2=&bRegex_2=false&bSearchable_2=true&sSearch=&bRegex=false&_=1418418256370 HTTP/1.1" 500 589 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
Run Code Online (Sandbox Code Playgroud)

注意500错误,该错误应该在error.log上,并且php跟踪正在发生在其他错误上.

有线索吗?

Ant*_*tin 6

当 PHP display_errors 被禁用时,PHP 错误会返回 Nginx 500 错误。

看看你的 php-fpm 日志,我相信你会在那里找到错误。使用 CentOS 7:

tail -f /var/log/php-fpm/www-error.log
Run Code Online (Sandbox Code Playgroud)

您终于可以显示 PHP 错误了。在 /etc/php.ini 中,更改:

display_errors = Off
Run Code Online (Sandbox Code Playgroud)

到 :

display_errors = On
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。


pix*_*pix 5

如果它对其他人有帮助(谷歌把我带到这里),我也遇到了类似的问题(尽管是在 Apache,而不是 nginx)。

我安装的一个较旧的应用程序给出了 500 错误,并且在任何地方都没有输出,尽管每个可以想象的错误日志记录设置都变成了最详细的级别。

事实证明,问题出在有争议的错误控制运算符“@”上。正如文档中的红色警告框所述,无论您的日志记录有多详细,如果 @ 前缀的命令导致 PHP 由于拼写错误或不可用(例如,因为您忘记安装关键的命令)而停止像 php-mysql 这样的模块),PHP 将退出,并且完全没有任何迹象表明原因。

因此,如果您发现自己出现 500 错误且没有日志,请检查代码库中是否有“@”符号。