我试图找到一种方法来处理任何4xx和5xx错误状态代码抛出像Apache 404错误的URL。只有在服务器没有抛出错误状态代码时,我才想执行if语句的内容。
使用以下if语句似乎即使找不到托管内容并抛出Apache 404错误,它仍会运行if语句的内容。
if (@fopen('http://example','r')){
use resource
}
else{
use other resources
}
有没有更好的方法来确保网址在运行之前可用?
编辑: 我不能在这种情况下使用curl。
感谢
答案 0 :(得分:0)
使用它。
$headers = @get_headers($url, 1);
if ($headers[0] == 'HTTP/1.1 200 OK') {
//valid
}
if($headers[0] == 'HTTP/1.1 404 Not Found') {
// not found
}
if ($headers[0] == 'HTTP/1.1 301 Moved Permanently') {
//moved or redirect page
}
get_headers()手册:http://php.net/manual/en/function.get-headers.php
答案 1 :(得分:0)
$headers = get_headers($url, 1);
if ($headers[0] == 'HTTP/1.1 200 OK') {//no error status codes thrown by the server
$data = file_get_contents($url);
//Do something
}