Я извлекаю образы альбомов 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);