2014-11-04 39 views
1

编辑:原因是阻止我们的reblaze服务(安全)。请忽略这个问题php file_get_contents在dev和production上的行为不同

我查了其他类似的问题,这种情况似乎有所不同。

我有这个简单的代码:

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

在我的开发PC时,打印出8861 - 图像的真实大小。在Linux ubuntu生产服务器上,它带来了一些从站点加载javascript的HTML代码(打印的大小是549字节)。

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

我试图从另一台生产服务器排除图像服务器通过IP阻止它。

这两个盒子有allow_url_fopen On。

还有什么可以检查,以了解为什么它不在生产服务器上工作?

+1

您可能有兴趣了解$ http_response_header - http://php.net/manual/en/reserved.variables.httpresponseheader.php和get_headers() - http://php.net/get_headers和stream_notification_callback() - http://php.net/stream_notification_callback为您的环境 – OIS 2014-11-04 09:38:19

+0

好主意。 都会返回200,表示'好serever'收到图片,'bad'收到HTML。 唯一的标题向好的服务器: '接受-范围:字节' '访问控制允许来源:*' '的Cache-Control:最大年龄= 604800' “内容类型:图像/ JPEG “ '的ETag: ”8afd6619a884cf1:0“' '的Last-Modified:星期二,2014年6月10日12时32分五十三秒GMT' 头特有的 '坏' 称: “缓存控制:无缓存,私人,无变换,无存储“ ”Content-Type:text/html; charset = utf-8“ ”过期时间:星期四,1970年1月1日00:00:01 GMT“ ”PageSpeed:off“ – Nir 2014-11-04 14:51:13

回答

1

只是一个想法,我用FireFox加载文件,并使用修改头扩展来过滤主机参数。它返回了一个与您的尺寸类似的错误。尝试将主机头集添加到www.fattal.co.il。看看是否可行

+0

谢谢!我尝试过,不幸的是它没有工作 – Nir 2014-11-04 14:41:54

0

显然原因是该网站使用的reblaze安全平台。我们只需要列出白名单。

谢谢!

相关问题