直到现在,我的php应用程序总是假设使用HTTP 1.1。因此,我定义了所有的头文件如下:
header("HTTP/1.1 500 Internal Server Error");
现在我的服务器也支持HTTP 2,我想将所有头部响应更新为正确的HTTP状态码。
如何获取http请求的HTTP协议版本?
(我的Web服务器是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($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');