getimagesize и https - PullRequest
       1

getimagesize и https

3 голосов
/ 15 декабря 2011

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

Ответы [ 3 ]

4 голосов
/ 15 декабря 2011

В вашем экземпляре PHP не установлено расширение OpenSSL, поэтому оболочка 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(), вероятно, не то, что вы хотите делать. Маловероятно, что единственное, что вы будете делать с изображением, это получить его размер, вы, вероятно, будете отображать его на своей странице или иным образом манипулировать им, и в этом случае вы в конечном итоге загрузите его несколько раз.

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

1 голос
/ 15 декабря 2011

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

Полагаю, это может помочь убрать https: // to http://

0 голосов
/ 15 декабря 2011

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

$url = "https://path/to/image.jpg";
$url = str_replace("https://", "http://", $url);
$size = getimagesize($url);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...