PHP中突然出现file_get_contents警告



我想为我的应用程序制作一个JSON结构,所以我将代码上传到了一个Web服务器,一切都正常了。突然,它显示出这样的警告:

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)); 
?>

我建议您使用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;
    }

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

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

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

或者使用卷曲,如果这不起作用的话。

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

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

php_value allow_url_fopen On

最新更新