php file_get_contents在开发和生产方面表现不同

时间:2014-11-04 09:15:04

标签: php curl wget

编辑:原因是重新启动服务(安全)阻止了我们。请忽略这个问题

我查了其他类似的问题,这个案子似乎有所不同。

我有这个简单的代码:

$src='http://www.fattal.co.il/Octopus/Upload/Images/Pages/thumbs/magic-sunrise-club-eilat-youth-club_thumb.jpg';

$opts = array(
  'http'=>array(
    'method'=>"GET",
    'user_agent' =>  'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0'
  )
);

$context = stream_context_create($opts);

$data=  file_get_contents( $src, false, $context, -1, 1500000);
echo strlen ($data);

在我的开发者电脑上,它打印出8861 - 图像的实际大小。在linux ubuntu生产服务器上,它带来了一些从网站加载javascript的HTML代码(打印的大小为549字节)。

这两个框从其他网站上很好地获取图像。因此包装似乎已经到位。此问题特定于示例中的站点。 我尝试模拟具有许多标头变体的服务器。包含浏览器将发送的所有可能标头。这没什么区别。

我尝试从其他生产服务器排除图像服务器通过IP阻止它。

这两个框有allow_url_fopen开。

我还能检查什么才能理解为什么它不能在生产服务器上运行?

2 个答案:

答案 0 :(得分:1)

只是一个想法,我用FireFox加载文件并使用Modify Headers扩展来过滤Host参数。它返回了一个与您的大小相似的错误。尝试将Host标头集添加到www.fattal.co.il。看看是否有效

答案 1 :(得分:0)

显然原因是网站使用的重新启动安全平台。我们只需要白名单。

谢谢!