在PHP中突然发出file_get_contents警告

时间:2013-08-17 16:30:40

标签: php json fopen file-get-contents

我想为我的应用程序创建一个JSON结构,所以我将我的代码上传到网络服务器,一切正常。突然,它显示了这个警告:

Warning: file_get_contents(): Couldn't resolve host name in /home/u815921584/public_html/slideshow.php on line 15

Warning: file_get_contents(http://www.webpage.com): failed to open stream: operation failed in /home/u815921584/public_html/slideshow.php on line 15

我认为问题出在服务器端,所以我在互联网上研究了这个问题,我发现可能不允许使用fopen,但事实是,因为这段代码工作了好几次。据说问题必须与某些服务器端设置有关(我无法真正修改)。

这是代码:

$fileInString = file_get_contents("http://www.webpage.com");


$divStart = "<div id=\"featured\">";
$divEnd = "</div>";
$imgStart = "<img src='";
$imgEnd = "'";

$currentPoint = 0;
$tomb = array();

/* Parsing */
// Parsing image  
$currentPoint = strpos($fileInString, $divStart, $currentPoint);
$currentPoint += (strlen($divStart)) ;
$endPoint =  strpos($fileInString, $divEnd, $currentPoint);
$img_text = substr($fileInString, $currentPoint, $endPoint - $currentPoint);
$currentPoint = $endPoint + strlen($divEnd);

    // Subparsing image
$innerPoint = strpos($img_text, $imgStart, 0);
  $innerPoint += strlen($imgStart);
  $innerEndPoint = strpos($img_text, $imgEnd, $innerPoint);
  $img_1 = "http://www.webpage.com".substr($img_text, $innerPoint, $innerEndPoint - $innerPoint);
  $innerEndPoint += strlen($imgEnd);

$innerPoint = strpos($img_text, $imgStart, $innerEndPoint);
  $innerPoint += strlen($imgStart);
  $innerEndPoint = strpos($img_text, $imgEnd, $innerPoint);
  $img_2 = "http://www.webpage.com".substr($img_text, $innerPoint, $innerEndPoint - $innerPoint);
  $innerEndPoint += strlen($imgEnd);

 $innerPoint = strpos($img_text, $imgStart, $innerEndPoint);
  $innerPoint += strlen($imgStart);
  $innerEndPoint = strpos($img_text, $imgEnd, $innerPoint);
  $img_3 = "http://www.webpage.com".substr($img_text, $innerPoint, $innerEndPoint - $innerPoint);
  $innerEndPoint += strlen($imgEnd);

    $tomb[0] = array("img1" => $img_1, "img2" => $img_2, "img3" => $img_3);



echo str_replace('\/','/',json_encode($tomb)); 
?>

4 个答案:

答案 0 :(得分:2)

我建议您使用curl通过HTTP获取内容。因为如果选择curl,则可以配置所有HTTP头,超时等。它比file_get_contents

更强大
  function get($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url); //set url
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // get content as string
        $data = curl_exec($ch); //execute 
        curl_close($ch); // close hander
        return $data;
    }

答案 1 :(得分:0)

这意味着,您的Web服务器的DNS服务器或此域的名称服务器不稳定。 请检查您的Web服务器正在使用的DNS服务器。也许将其更改为Google的DNS服务器:8.8.8.8或您的ISP的DNS服务器

如果名称服务器不稳定,您需要联系您的名称服务器提供商或将其更改为Amazon Route 53服务器并再试一次

答案 2 :(得分:0)

尝试使用已知可以测试的网站。像谷歌一样。

如果这个dosnt有效,可以使用Curl。

答案 3 :(得分:0)

要使用file_get_content读取网址allow_url_fopen必须设置为开启。你检查过了吗?

如果您无法访问托管服务上的php.ini,可以使用

.htaccess文件启用它
php_value allow_url_fopen On