我正在尝试通过图形api检索用户显示图片并使用cUrl将其保存到磁盘中,但是在尝试检查我保存的图片的mime类型时无法成功并且出现此错误:
Notice: exif_imagetype(): Read error! in
//$userPpicture = $user_profile[picture];
//Create image instances
$url = "http://graph.facebook.com/{$userId}/picture?type=large";
$dpImage = 'temp/' . $userId . '_dpImage_' . rand().'.jpg';
echo $dpImage;
function get_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$returned_content = get_data($url);
file_put_contents($dpImage, $returned_content);
echo "Type: " . exif_imagetype($dpImage);
使用curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
获取此更新后的代码我收到此错误:
Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /var/fog/apps/app12345/myapp.phpfogapp.com/start.php on line 178
如果此操作需要任何服务器端配置,那么我可能无法执行此操作,因为我使用phpfog
上的共享云存储。
请帮助我。
三江源。
答案 0 :(得分:2)
您使用http://graph.facebook.com/4/picture?type=large的图表网址会返回HTTP 302重定向,而不是实际的用户图片。您需要按照重定向并在该网址下载图片,该网址是这样的网址:http://profile.ak.fbcdn.net/hprofile-ak-snc4/49942_4_1525300_n.jpg
答案 1 :(得分:1)
正如OffBySome指出的那样,您需要按照graph.facebook.com提供的302重定向到最终目的地,其中包含实际的图像数据。
在这种情况下,最简单的方法是使用CURLOPT_FOLLOWLOCATION添加另一个curl_setopt调用为true。即
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true)
查看http://us3.php.net/manual/en/function.curl-setopt.php了解详情。