在PHP解析错误后,Nginx发送状态200

时间:2011-04-24 21:42:23

标签: linux nginx fastcgi php

我在Ubuntu上用php-fpm配置了nginx(一切运行良好)。

我遇到的一件事是,当发生PHP解析错误时,会发送HTTP状态代码200。错误日志包含以下条目:

  

[error] 3205#0:* 2854在stderr中发送的FastCGI:“PHP Parse错误:语法错误,第32行/var/www/.../index.php中的意外T_REQUIRE_ONCE”从上游读取响应头,客户端:1.2.3.4,server:example.com;请求:“GET / HTTP / 1.1”,上游:“fastcgi://127.0.0.1:9000”,主持人:“example.com”

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

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

1 个答案:

答案 0 :(得分:2)

仅供参考,现在已经在PHP 5.4及更高版本的Xdebug(2.2)中修复了这个问题。遗憾的是,它需要对PHP进行更改才能使其无法后移到5.3。