PHP URL错误处理

时间:2014-12-06 03:44:04

标签: php apache fopen

我试图找到一种方法来处理任何4xx和5xx错误状态代码抛出像Apache 404错误的URL。只有在服务器没有抛出错误状态代码时,我才想执行if语句的内容。

使用以下if语句似乎即使找不到托管内容并抛出Apache 404错误,它仍会运行if语句的内容。

if (@fopen('http://example','r')){
            use resource
}
else{
use other resources
}

有没有更好的方法来确保网址在运行之前可用?

编辑: 我不能在这种情况下使用curl。

感谢

2 个答案:

答案 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
  }