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跟踪正在发生在其他错误上.
有线索吗?
当 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)
希望能帮助到你。
如果它对其他人有帮助(谷歌把我带到这里),我也遇到了类似的问题(尽管是在 Apache,而不是 nginx)。
我安装的一个较旧的应用程序给出了 500 错误,并且在任何地方都没有输出,尽管每个可以想象的错误日志记录设置都变成了最详细的级别。
事实证明,问题出在有争议的错误控制运算符“@”上。正如文档中的红色警告框所述,无论您的日志记录有多详细,如果 @ 前缀的命令导致 PHP 由于拼写错误或不可用(例如,因为您忘记安装关键的命令)而停止像 php-mysql 这样的模块),PHP 将退出,并且完全没有任何迹象表明原因。
因此,如果您发现自己出现 500 错误且没有日志,请检查代码库中是否有“@”符号。
| 归档时间: |
|
| 查看次数: |
16074 次 |
| 最近记录: |