PHPparsing错误后,Nginx发送状态200

我已经在Ubuntu上configuration了php-fpm的nginx(并且一切正常)。

我遇到的一件事情是,发生PHPparsing错误时发送HTTP状态码200。 错误日志包含以下条目:

当读取来自上游的响应报头时,在stderr中发送FastCGI:“PHPparsing错误:语法错误,在32行/var/www/…/index.php中出现意外的T_REQUIRE_ONCE”客户机:错误3205#0: 1.2.3.4,server:example.com; 请求:“GET / HTTP / 1.1”,上行:“fastcgi://127.0.0.1:9000”,主机:“example.com”

我无法弄清楚,为什么不发送代码50x。 我还没有configuration任何error_page设置,我读了error_page的文档 。 我也尝试过设置状态码(error_page 500 = 500 / 50x.html等等)。 但总是状态200返回。

我可以从PHP( header('HTTP/1.1 404 Not Found') )发送状态头,这是有效的。 但是,对于由PHP解释器发出的错误(也是未捕获的exception),服务器的响应不考虑发生了错误。

仅供参考,现在已经在Xdebug(2.2)中针对PHP 5.4及更高版本进行了修正。 不幸的是,它需要改变PHP才能使其工作,无法移植到5.3。