Intereting Posts
Laravel 4 – Отправка ввода обратно при неудачной отправке Symfony2: Предотвращение дублирования в базе данных с формой от многих до одного Как я могу извлечь или распаковать gzip-файл, используя php? Перенос содержимого таблиц и разбора переменных таблицы на следующую страницу Как установить фильтры и валидаторы в полях ZF2 с помощью Zend \ Form \ Factory? Автоматическое создание документации PHP? Могу ли я «эхо» изображения .jpg через php без его обработки? Как правильно избежать обратного слэша, чтобы соответствовать буквальной обратной косой чертой в шаблонах регулярных выражений с одним кавычком и двойным кавычком Как IPC между клиентами PHP и сервером C Daemon? как я могу установить cookie в curl Как отправить объект json с помощью Http.post (Angular 2) (сторона php-сервера) Начало работы с PHP Extension-Development Как получить nsmutablearray в php-стороне Запись в php: // stderr Лучший способ удалить = и? от метода get в PHP?

getimagesize и https

Я извлекаю образы альбомов facebook из facebook. Я вычислил размер изображения, используя функцию php getimagesize. Эта функция работает нормально, когда URL-адрес находится в режиме http. Когда facebook возвращает URL-адрес изображения с https, getimagesize дает ошибку. Как я может рассчитывать изображение изображений с расширением https с использованием размера изображения

У вас нет расширения OpenSSL, установленного в вашем экземпляре PHP, поэтому оболочка https:// недоступна.

Из руководства :

Примечание. HTTPS поддерживается только при включенном расширении openssl.

И :

Чтобы использовать поддержку OpenSSL для PHP, вы также должны скомпилировать PHP -with-openssl [= DIR].

Вам нужно будет перекомпилировать PHP с расширением OpenSSL.

В качестве альтернативы, как было предложено другими, вы можете заменить https:// на http:// , который для изображений Facebook должен работать так же хорошо – действительно, это может быть быстрее и, безусловно, будет более эффективным с пропускной способностью.

Я бы сделал так:

 $url = 'https://facebook.com/path/to/image.jpg'; $url = trim($url); // Get rid of any accidental whitespace $parsed = parse_url($url); // analyse the URL if (isset($parsed['scheme']) && strtolower($parsed['scheme']) == 'https') { // If it is https, change it to http $url = 'http://'.substr($url,8); } 

Еще один момент в том, что передача $url непосредственно в getimagesize() , вероятно, не является тем, что вы хотите делать. Маловероятно, что единственное, что вы делаете с изображением, это его размер, вы, вероятно, будете отображать его на своей странице или иным образом манипулировать им, и если бы это было так, то ваша в конечном итоге загрузила его более одного раза.

Вероятно, вы должны загрузить его во временный каталог, а затем работать с его локальной копией.

$newlink = str_replace('https://', 'http://', $oldlink);

Я думаю, это могло бы помочь удалить https: // в http: //

Я тестировал это, и он работал нормально.

 $url = "http://img.ruphp.com/php/image.jpg"; $url = str_replace("https://", "http://", $url); $size = getimagesize($url);