如何在PHP脚本中使用服务器的HTTP响应的第一行(在我的情况下为Apache2)?例如:
HTTP/1.1 200 OK
HTTP/1.1 404 Not Found
Etc.
或者更好的是,只获取我的服务器发送给客户端的HTTP响应代码。
令我惊讶的是,$_SERVER没有它。 http_response_code()似乎只获得响应代码,如果它首先由PHP设置的话。 apache_response_headers()似乎没有它。 get_headers()似乎需要一个额外的步骤/连接(如果我错了,请纠正我)。
如果我在httpd.conf中设置ErrorDocument 403 /index.php
,我可以使用$_SERVER["REDIRECT_STATUS"]
从PHP获取响应代码,但还有其他方法吗?
修改
为了清楚起见,我发现奇怪的是$_SERVER
几乎返回每一位数据,除了响应的第一行或响应代码。也许这是HTTP协议/服务器技术/ PHP之间的一般限制?也许我不应该尝试在我的PHP脚本中访问这些信息?
答案 0 :(得分:1)
更新:不可能除非您代理自己的请求。将您的请求发送到面向公众的URL,然后将它们重定向到内部变体,您就可以看到流程中的标题。但这也不是一件容易的壮举和性能征税。或者你可以写一个Http Server扩展,看看你需要的地方:)
示例:
第一次尝试回答
http://php.net/manual/en/function.headers-list.php - 可能是这个吗?
但这适用于您即将发送的标题......
register_shutdown_function(function(){
// Headers are really sent here, do some comparison
var_dump(headers_list());
});
.htaccess 变体,用于将所有丢失的文件定向到index.php。
RewriteEngine on
#If handler file is missing, pull index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php [L,NC]
试试这个。
答案 1 :(得分:0)
您是否要求远程主机或本地计算机的响应代码?在第一种情况下,您可以使用设置了标题选项的CURL请求“ping”机器,并检索响应标头的各种设置。