php:file_get_contents返回空字符串

时间:2015-10-24 20:54:20

标签: php curl file-get-contents

我正在尝试使用file_get_contents函数在屏幕上打印图片网址的内容:

<?php
$image2 = "http://www.example.com";
echo file_get_contents( $image2 );
?>

运行时,页面加载大约需要15-20秒,然后不显示任何内容。我也试图使用cURL,它给出了相同的结果。有人对如何解决这个问题有任何建议吗?

以下是我尝试的卷曲代码:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$contents=curl_exec($ch);
curl_close($ch);
echo $contents;
?>

运行时,页面会一直加载,直到服务器取消请求为止。

2 个答案:

答案 0 :(得分:0)

file_get_contents与许多PHP函数一样,如果失败则返回false。 false is not echoed输出,这就是为什么你没有看到任何东西,就像回显了一个空字符串。

将结果存储在变量中,并与===运算符一起检查以检查错误。

$file = file_get_contents($image2);
if ($file === false) {
  // Check the error and handle as you like.
} else {
  echo $image2;
}

不幸的是,这只是告诉你是否有错误,而不是错误。幸运的是,您也使用过cUrl。还有curl_errorcurl_errno,您可以使用它来更详细地描述错误本身。通常这会立即清理。

我对此表示怀疑:通常我会认为file_get_contents的失败与allow-url-fopen的设置有关,但是现在,延迟20秒,以及cUrl显示相同的事实行为,表示您可能会超时。可能是您的防火墙不允许您执行此类请求。

答案 1 :(得分:0)

鉴于您提到您的脚本正在免费的主机服务器上运行。

大多数免费托管服务器都禁用了file_get_contents()函数。检查免费托管服务器的“帮助”部分,我非常有信心它会被禁用。