7

到目前为止,我的 php 应用程序都假定 HTTP 1.1 无处不在。所以我像这样定义了所有标题:

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

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

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

(我的网络服务器是 nginx,但我想如果我使用的是 nginx 或 apache,这无关紧要。)

4

2 回答 2

15

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

phpinfo()Apache 2.4 开始:

SERVER_PROTOCOL => HTTP/1.1
于 2016-01-11T09:54:43.767 回答
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');
于 2016-01-11T10:19:44.843 回答