9

Until now my php application assumed HTTP 1.1 everywhere. So I defined all headers like so:

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

But now my server also supports HTTP 2 and I want to update all header responses with the right HTTP status code.

How to I get the HTTP Protocol version of the http request?

(My webserver is nginx, but I guess it is irrelevant if I am using nginx or apache.)

2 Answers 2

17

The server protocol should be available through SERVER_PROTOCOL from the server environment, usually exposed through $_SERVER['SERVER_PROTOCOL'] inside your application.

From phpinfo() under Apache 2.4:

SERVER_PROTOCOL => HTTP/1.1
Sign up to request clarification or add additional context in comments.

Comments

1

changing /etc/nginx/factcgi_params:

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

Header should be:-

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

1 Comment

FYI a space is missing before the '404'.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.