2

为什么 PHP $_SERVER变量数组中没有 HTTP 响应代码(或 HTTP 响应标头的第一行)?

它是对服务器技术工作方式的限制吗?PHP 的限制?使用 HTTP 协议?或者,也许我完全不想要 HTTP 响应代码?;)

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

只是好奇。

编辑 1:在发送服务器响应之前,我正在询问Apache 的 LogFormat 指令使用的%>sLAST 请求的状态)等价物。

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

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

4

3 回答 3

9

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

于 2012-10-20T19:04:36.213 回答
0

$_SERVER 包含 http 请求的所有数据、标头以及其他信息,例如当前文件的路径。但不是响应,您的脚本旨在创建响应,而不是访问它。

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

于 2012-10-20T19:07:47.303 回答
0

如果您不使用 header 函数设置它,状态码将始终200用于成功响应,如果发生致命错误,php 可能会将其更改为500(Internal Server Error)。

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

于 2012-10-20T19:37:12.493 回答