使用file_get_contents()PHP函数

时间:2015-04-26 16:17:06

标签: php curl error-handling file-get-contents

我遇到file_get_contents()函数的问题:如果远程文件重定向到另一个URI,我会得到脚本中断和脚本输出的重复:

代码:

$context = stream_context_create(['http'=>['timeout'=>10]]);
$url = 'http://example.com/';
echo "URL: $url\n";
$page = file_get_contents($url,FALSE,$context);
echo "Page size: ".strlen($page);

输出:

URL: http://example.com/
URL: http://example.com/

(请注意输出重复并且没有“页面大小”输出)

预期产出:

URL: http://example.com/
Page size: 1000

我相信file_get_contents()无法处理我在浏览器中尝试使用网址时可以看到的重定向。所以我想实现以下目标之一:

  1. 抓住错误以便能够处理这种情况

  2. 尽管有重定向

  3. ,但仍加载页面

    也许我可以为$context添加更多选项?或方式是移至curl

2 个答案:

答案 0 :(得分:2)

file_get_contents()的错误用法: http://php.net/manual/en/function.file-get-contents.php 第三个参数应该是$ context

答案 1 :(得分:1)

有很多很棒的库可以从PHP处理问题来处理curl。我个人喜欢Guzzle和Request。您可以找到指向该库here的链接。

话虽如此,您的脚本确实存在语法错误,因为$contextfile_get_content()的第三个参数。

应该是:

$page = file_get_contents($url, false, $context);

你可以通过extra options to your stream_context_create。默认情况下,它遵循重定向,20是放弃之前的最大重定向数。

您确定该网址在浏览器中加载时,是否不会使用JS进行重定向?