编辑:原因是阻止我们的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。
还有什么可以检查,以了解为什么它不在生产服务器上工作?
您可能有兴趣了解$ 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
好主意。 都会返回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