首页 > 解决方案 > 如果 PHP 崩溃或调试停止,Nginx + PHP-FPM 如何返回 5xx 状态码?

问题描述

我使用 PHP-FPM 运行 Nginx,配置非常常见,没什么特别的:

        location / {
            try_files $uri @fpm;
        }

        location @fpm {
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_pass fpm:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /var/www/html/app/public/index.php;
            fastcgi_param SCRIPT_NAME index.php;
            fastcgi_param APPLICATION_ENV dev;
        }

PHP-FPM 在具有默认 PHP-FPM 配置(当前为 7.3 版)的容器中运行。

我发现如果 PHP 脚本意外崩溃而没有返回任何响应,或者当我使用 XDebug 调试脚本并停止调试终止请求时(直到最后才恢复运行),Nginx 会返回成功的 HTTP 响应代码(200),但响应为空。在这种情况下如何使它返回 5xx 范围的错误代码?可能问题出在 PHP-FPM 返回一个成功的结果,但我没有找到任何可能的解决方案。

标签: phpnginxfpm

解决方案


推荐阅读