2012-03-26 5 views
1

Я пытаюсь найти пользователей, отображающих изображение через график api, и используя cUrl, чтобы сохранить его на диске, но я не могу его преуспеть и получить эту ошибку при попытке проверить мим тип изображения, которое я сохранил:Не удается получить и сохранить изображение пользователя с помощью cURL

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.

Просьба помочь мне в этом.

Thankyou.

+0

Вы уверены, что разрешение было предоставлено приложению для доступа к картинке? – Reinard

+0

да все необходимые разрешения. – Maven

+0

@Sir - изображения через/id/picture являются общедоступными - Maven - посмотрите изображение в каталоге temp - убедитесь, что вы получаете то, что ожидаете - также попробуйте file_get_contents (он работает с URL-адресами) – scibuff

ответ

2

Графический url, который вы используете http://graph.facebook.com/4/picture?type=large, возвращает перенаправление HTTP 302, а не изображение пользователя. Вам нужно будет выполнить перенаправление и загрузить изображение по этому URL-адресу, который выглядит следующим образом: http://profile.ak.fbcdn.net/hprofile-ak-snc4/49942_4_1525300_n.jpg

+0

Спасибо за ответ, я последовал за вами предложением, разрешив cURL следовать действию (см. Мой обновленный код), но теперь я получаю это новое предупреждение. пожалуйста помоги. – Maven

1

Как указано в OffBySome, вам необходимо следовать переадресации 302, обслуживаемой graph.facebook.com, в финал пункт назначения, который содержит фактические данные изображения.

Самый простой способ сделать это в этом случае - добавить еще один вызов curl_setopt с CURLOPT_FOLLOWLOCATION как true. т.е.

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true)

Заканчивать http://us3.php.net/manual/en/function.curl-setopt.php для более подробной информации.

+0

Спасибо за ответ, сделал это, но теперь я получаю это новое предупреждение. (см. мой обновленный код), пожалуйста, помогите. – Maven

Смежные вопросы