为什么 PHP $_SERVER 变量中没有 HTTP 响应代码?

Why is the HTTP response code not available in the PHP $_SERVER variable?

提问人:Jeff 提问时间:10/21/2012 最后编辑:Jeff 更新时间:10/21/2012 访问量:1059

问:

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

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

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

只是好奇。

编辑1:我正在询问在发送服务器响应之前 Apache 的 LogFormat 指令使用的等效项(LAST 请求的状态)。%>s

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

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

php http 标头

评论

3赞 Jared Farrish 10/21/2012
您正在构建响应;服务器发回的代码是响应代码。您需要它在服务器上做什么?流?
0赞 raina77ow 10/21/2012
告诉我,您到底想在什么时候获得响应代码?在发送响应之前还是之后?
1赞 NullPoiиteя 10/21/2012
php.net/manual/en/reserved.variables.httpresponseheader.php
2赞 raina77ow 10/21/2012
@NullPointer 是的,但不知何故,我认为这不是 OP 想要的。)
0赞 CodeAngry 10/21/2012
$_SERVER 包含 REQUEST(传入) 标头中的服务器变量。HTTP 状态代码是 RESPONSE(outgoing) 标头之一:)不要改写你的问题,你将一事无成。

答:

9赞 Jon 10/21/2012 #1

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

0赞 geekman 10/21/2012 #2

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

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

0赞 dev-null-dweller 10/21/2012 #3

如果您不使用标头函数设置它,则状态代码将始终用于成功响应,如果出现致命错误,php 可能会将其更改为(内部服务器错误)。200500

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

评论

0赞 Gaia 2/11/2013
你知道 400 有时是否由 apache 处理而不将其传递给 php 吗?