PHP:获取 HTTP 协议版本(HTTP/1.1 对比 HTTP/2)

PHP: Get HTTP Protocol Version (HTTP/1.1 vs HTTP/2)

直到现在,我的 php 应用程序都采用 HTTP 1.1。所以我定义了所有 headers 像这样:

header("HTTP/1.1 500 Internal Server Error"); 

但现在我的服务器也支持 HTTP 2,我想用正确的 HTTP 状态代码更新所有 header 响应。

如何获取 http 请求的 HTTP 协议版本?

(我的网络服务器是nginx,但我想这与我使用的是nginx还是apache无关。)

服务器协议应该可以通过 SERVER_PROTOCOL 从服务器环境获得,通常通过 $_SERVER['SERVER_PROTOCOL'] 在您的应用程序中公开。

来自 Apache 2.4 下的 phpinfo()

SERVER_PROTOCOL => HTTP/1.1

改变/etc/nginx/factcgi_params:

#fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  SERVER_PROTOCOL    HTTP/2.0;

Header 应该是:-

header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');