PHP如何获取http状态码
原创PHP获取HTTP状态码的方法
在PHP开发过程中,我们有时需要获取当前请求的HTTP状态码。这可以用于调试或按照状态码做出相应的处理。下面将介绍几种在PHP中获取HTTP状态码的方法。
方法一:使用$_SERVER['REDIRECT_STATUS']变量
当使用Apache服务器时,可以使用$_SERVER['REDIRECT_STATUS']
变量获取HTTP状态码。但是,这种方法并不适用于所有场景,由于它仅在服务器重定向后才会有效。
<?php
$httpStatusCode = $_SERVER['REDIRECT_STATUS'];
echo "HTTP状态码:".$httpStatusCode;
?>
方法二:使用headers_list()和headers_sent()函数
PHP提供了headers_list()
和headers_sent()
函数,可以用来检查和获取已经发送的HTTP头部信息。通过遍历头部信息,我们可以获取HTTP状态码。
<?php
if (!headers_sent()) {
// 尚未发送头部信息,无法获取状态码
echo "HTTP头部信息尚未发送!";
} else {
$headers = headers_list();
foreach ($headers as $header) {
if (strpos($header, 'HTTP/') === 0) {
$parts = explode(' ', $header);
$httpStatusCode = $parts[1];
break;
}
}
echo "HTTP状态码:".$httpStatusCode;
}
?>
方法三:使用curl扩展(适用于发起请求时获取状态码)
当我们使用PHP的curl扩展发起HTTP请求时,可以通过curl句柄获取响应的HTTP状态码。
<?php
$curl = curl_init("http://example.com");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
$response = curl_exec($curl);
$httpStatusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
echo "HTTP状态码:".$httpStatusCode;
?>
总结
在PHP中获取HTTP状态码有多种方法,但需要注意的是,某些方法仅适用于特定场景。在实际开发中,请按照实际需求选择合适的方法。