【问题标题】:PHP-FPM Always returns 200 response code regardless PHP errorsPHP-FPM 不管 PHP 错误总是返回 200 响应代码
【发布时间】:2019-06-14 20:40:36
【问题描述】:

PHP-FPM 不管 PHP 错误总是返回 200 响应代码。

php 容器:

display_errors = Off
log_errors = On

httpd 容器:

<IfModule proxy_module>
<FilesMatch \.php$>
    SetHandler  "proxy:fcgi://php:9000"
</FilesMatch>
</IfModule>

index.php

// infinite loop
while (true) {}
// or parser error
wh ile (true) {}

生成页面

Parse error: syntax error, unexpected 'ile' (T_STRING) in /var/www/html/index.php on line 10

响应状态为 200

日志

php | 172.22.0.1 - 21/Jan/2019:12:59:03 +0000 "GET /index.php" "http://example.local/" status:200 /var/www/html/web/index.php took:286.962ms mem:18432Kb cpu:83.63%
php | [21-Jan-2019 12:59:03] WARNING: [pool www] child 122 said into stderr: "NOTICE: PHP message: PHP Parse error:  syntax error, unexpected 'ile' (T_STRING) in /var/www/html/index.php on line 10"
httpd | [Mon Jan 21 12:59:04.001447 2019] [proxy_fcgi:error] [pid 8:tid 140486365661928] [client 172.22.0.1:59478] AH01071: Got error 'PHP message: PHP Parse error:  syntax error, unexpected 'ile' (T_STRING) in /var/www/html/index.php on line 10\n'
httpd | example.local 172.22.0.1 - - [21/Jan/2019:12:59:03 +0000] "GET / HTTP/1.1" 200 115 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"

UPD 1

我已经使用来自 Docker 集线器的任何 php:*-fpm-* 图像复制了此行为,而无需对 php 配置进行任何修改。

UPD 2

测试 repo 以重现行为 https://github.com/mahnunchik/php-fpm-response-code

【问题讨论】:

  • 请添加更多关于“php 容器”是什么的详细信息... php.ini 中有相关设置(您已发布)但也有可能导致此问题的 fpm 配置文件.
  • PHP 错误并不一定意味着非 200 响应,HTTP 服务器应该如何知道出现了问题?如果 PHP 进程没有响应,它可以做的最好的事情是提供 500 响应。如果您希望从 PHP 进程设置非 200 返回码,则需要调用 http_response_code。如果您希望为所有错误返回非 200 错误,您需要使用 set_error_handlerset_exception_handler,您可以在其中调用 http_response_code 来指示 HTTP 进程失败。

标签: php apache docker alpine fpm


【解决方案1】:

您可以通过在脚本开头添加以下行来轻松解决此问题:

http_response_code(500);

【讨论】:

    猜你喜欢
    • 2019-02-21
    • 2022-10-20
    • 2012-03-09
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2012-06-21
    相关资源
    最近更新 更多