0

我想为我的应用程序创建一个 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

4 回答 4

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;
    }
于 2013-08-17T16:45:38.617 回答
0

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

如果您无权访问托管服务上的 php.ini,您可以.htaccess使用从文件中打开它

php_value allow_url_fopen On
于 2013-08-17T16:49:59.513 回答
0

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

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

于 2013-08-17T16:41:39.117 回答
0

尝试使用已知可进行测试的网站。像谷歌。

或者使用 Curl,如果这不起作用。

于 2013-08-17T16:46:00.903 回答