为什么HTTP响应代码(或HTTP响应头的第一行)在PHP $_SERVER变量数组中不可用?
这是对服务器技术运作方式的限制吗? PHP的局限性?使用HTTP协议?或者我可能完全不需要HTTP响应代码? ;)
就我而言,我正在使用Apache2。
好奇。
编辑1:我在询问服务器之前the status of the LAST request 使用的%>s
(Apache's LogFormat directive)的等效内容回复已发送。
编辑2:答案非常有意义,但问题仍然存在,为什么我无法获取服务器的内部工作响应代码?如果我设置ErrorDocument 403 /index.php
,我可以使用$_SERVER['REDIRECT_STATUS']
访问响应代码。是不是有更简单的方法?我猜不是。不过,我仍然从你的答案中学到了很多东西。这很有道理。
还有apache_response_headers(),但仍然不喜欢工作响应代码/第一行。
答案 0 :(得分:9)
因为HTTP响应是发送到客户端的内容,您可以使用header
函数在PHP中更改它。它不是PHP中的自动内容,并且在将它交给PHP之前由服务器(即apache)处理。
答案 1 :(得分:0)
$ _ SERVER包含http请求的所有数据,标题以及其他信息,如当前文件的路径。但是没有响应,你的脚本是为了创建响应,而不是访问它。
答案 2 :(得分:0)
如果没有使用标题函数设置它,状态代码将始终为200
以便成功响应,如果出现致命错误,php可能会将其更改为500
(内部服务器错误)。
几乎所有其他状态都由网络服务器处理,而不会将您的请求传递给您的脚本。