为什么HTTP响应代码在PHP $ _SERVER变量中不可用?

时间:2012-10-20 19:02:21

标签: php http-headers

为什么HTTP响应代码(或HTTP响应头的第一行)在PHP $_SERVER变量数组中不可用?

这是对服务器技术运作方式的限制吗? PHP的局限性?使用HTTP协议?或者我可能完全不需要HTTP响应代码? ;)

就我而言,我正在使用Apache2。

好奇。

编辑1:我在询问服务器之前the status of the LAST request 使用的%>sApache's LogFormat directive)的等效内容回复已发送。

编辑2:答案非常有意义,但问题仍然存在,为什么我无法获取服务器的内部工作响应代码?如果我设置ErrorDocument 403 /index.php,我可以使用$_SERVER['REDIRECT_STATUS']访问响应代码。是不是有更简单的方法?我猜不是。不过,我仍然从你的答案中学到了很多东西。这很有道理。

还有apache_response_headers(),但仍然不喜欢工作响应代码/第一行。

3 个答案:

答案 0 :(得分:9)

因为HTTP响应是发送到客户端的内容,您可以使用header函数在PHP中更改它。它不是PHP中的自动内容,并且在将它交给PHP之前由服务器(即apache)处理。

答案 1 :(得分:0)

$ _ SERVER包含http请求的所有数据,标题以及其他信息,如当前文件的路径。但是没有响应,你的脚本是为了创建响应,而不是访问它。

http://php.net/manual/en/reserved.variables.server.php

答案 2 :(得分:0)

如果没有使用标题函数设置它,状态代码将始终为200以便成功响应,如果出现致命错误,php可能会将其更改为500(内部服务器错误)。

几乎所有其他状态都由网络服务器处理,而不会将您的请求传递给您的脚本。