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

发布于 2024-11-03 07:09:13 字数 698 浏览 1 评论 0原文

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

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

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

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

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

I've configured nginx with php-fpm on Ubuntu (and everything works pretty well).

One thing I encountered is that HTTP status code 200 is sent, when a PHP parse error occurs. The error log contains the following entry:

[error] 3205#0: *2854 FastCGI sent in stderr: "PHP Parse error: syntax error, unexpected T_REQUIRE_ONCE in /var/www/.../index.php on line 32" while reading response header from upstream, client: 1.2.3.4, server: example.com; request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "example.com"

I was not able to figure out, why not a code 50x is sent. I have not configured any error_page settings and I read the documentation of error_page. I also tried it to set the status code (with error_page 500 =500 /50x.html and so on). But always status 200 is returned.

I can send status headers from PHP (header('HTTP/1.1 404 Not Found')), this works. However, for errors issued by the PHP interpreter (also uncaught exceptions), the server's response doesn't take into account that an error occurred.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

老娘不死你永远是小三 2024-11-10 07:09:13

仅供参考,此问题现已在 PHP 5.4 及更高版本的 Xdebug (2.2) 中修复。遗憾的是,它需要对 PHP 进行更改才能使其正常工作,但无法向后移植到 5.3。

FYI, this is now fixed in Xdebug (2.2) for PHP 5.4 and up. Sadly, it needed a change in PHP to make it work that could not be back-ported to 5.3.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文