Невозможно получить и сохранить отображаемую картинку пользователя через cURL - PullRequest
1 голос
/ 26 марта 2012

Я пытаюсь получить изображение пользователя, отображаемое через graph api, и использую 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.

Пожалуйста, помогите мне с этим.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 26 марта 2012

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

1 голос
/ 26 марта 2012

Как указывает 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 для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...