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

7

直到现在,我的php应用程序总是假设使用HTTP 1.1。因此,我定义了所有的头文件如下:

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

现在我的服务器也支持HTTP 2,我想将所有头部响应更新为正确的HTTP状态码。

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

(我的Web服务器是nginx,但我猜无论我使用的是nginx还是apache都不相关。)

2个回答

15

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

在Apache 2.4下从phpinfo()获取:

SERVER_PROTOCOL => HTTP/1.1

1

更改 /etc/nginx/factcgi_params:

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

标题应为:

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

1
请注意,在“404”之前缺少一个空格。 - drmad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接