提问人:Jeff 提问时间:10/21/2012 最后编辑:Jeff 更新时间:10/21/2012 访问量:1059
为什么 PHP $_SERVER 变量中没有 HTTP 响应代码?
Why is the HTTP response code not available in the PHP $_SERVER variable?
问:
为什么 HTTP 响应代码(或 HTTP 响应标头的第一行)在 PHP $_SERVER 变量数组中不可用?
它是否限制了服务器技术的工作方式?PHP的局限性?使用HTTP协议?或者,也许我想要HTTP响应代码是完全疯狂的?;)
就我而言,我正在使用 Apache2。
只是好奇。
编辑1:我正在询问在发送服务器响应之前 Apache 的 LogFormat 指令使用的等效项(LAST 请求的状态)。%>s
编辑2:答案很有道理,但问题仍然存在,为什么我无法获得服务器的内部工作响应代码?如果我设置了一个 ,我可以使用 访问响应代码。难道没有更简单的方法吗?我猜不是。然而,我仍然从你的回答中学到了很多东西。这是有道理的。ErrorDocument 403 /index.php
$_SERVER['REDIRECT_STATUS']
还有 apache_response_headers(),但仍然不喜欢工作响应代码/第一行。
答:
因为 HTTP 响应是发送到客户端的内容,您可以使用该函数在 PHP 中更改它。它不是在你的PHP中自动的东西,在它被交给PHP之前,它是由服务器(即apache)处理的。header
$_SERVER 包含 HTTP 请求的所有数据、标头以及其他信息,如当前文件的路径。但不是响应,您的脚本旨在创建响应,而不是访问它。
http://php.net/manual/en/reserved.variables.server.php
如果您不使用标头函数设置它,则状态代码将始终用于成功响应,如果出现致命错误,php 可能会将其更改为(内部服务器错误)。200
500
几乎所有其他状态都由 Web 服务器处理,而不会将请求传递给脚本。
评论