到目前为止,我的 php 应用程序都假定 HTTP 1.1 无处不在。所以我像这样定义了所有标题:
header("HTTP/1.1 500 Internal Server Error");
但是现在我的服务器也支持 HTTP 2,我想用正确的 HTTP 状态代码更新所有的标头响应。
如何获取 http 请求的 HTTP 协议版本?
(我的网络服务器是 nginx,但我想如果我使用的是 nginx 或 apache,这无关紧要。)
服务器协议应该SERVER_PROTOCOL
在服务器环境中可用,通常$_SERVER['SERVER_PROTOCOL']
在应用程序内部公开。
从phpinfo()
Apache 2.4 开始:
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');