getimagesize (): не работает над HTTPS-каналом [duplicate]

Использование базовой функции R aggregate:

aggregate(value ~ name, dat1, I)

# name           value.1  value.2  value.3  value.4
#1 firstName      0.4145  -0.4747   0.0659   -0.5024
#2 secondName    -0.8259   0.1669  -0.8962    0.1681
3
задан Warrior 15 December 2011 в 12:15
поделиться

3 ответа

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

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

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

И :

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

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

4
ответ дан DaveRandom 22 August 2018 в 08:04
поделиться
  • 1
    У меня OpenSSL, как показано на выходе phpinfo: OpenSSL support enabled OpenSSL Library Version OpenSSL 1.0.2g 1 Mar 2016 OpenSSL Header Version OpenSSL 1.0.2g 1 Mar 2016 Openssl default config /usr/lib/ssl/openssl.cnf, но https препятствует открытию изображения getimagesize(). – Stephane 10 February 2017 в 13:27
  • 2
    @Stephane может быть несколько причин для этого. Поверните отчет об ошибках до максимума (error_reporting(-1); ini_set('display_errors', '1');) и проверьте все сообщения об ошибках, чтобы узнать, почему это не работает. Скорее всего, это ошибка сертификата. – DaveRandom 10 February 2017 в 14:16

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

$url = "https://path/to/image.jpg";
$url = str_replace("https://", "http://", $url);
$size = getimagesize($url);
0
ответ дан luastoned 22 August 2018 в 08:04
поделиться

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

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

1
ответ дан MrLewk 22 August 2018 в 08:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: