getimagesize和https

时间:2011-12-15 10:15:15

标签: php facebook https

我正在从facebook上检索facebook相册图片。我使用php函数getimagesize计算图像大小。当网址处于http模式时,此功能正常工作。当facebook返回图像网址时使用https geERGize给出错误。如何使用getimage size

计算具有https扩展名的图像的图像尺寸

3 个答案:

答案 0 :(得分:4)

您的PHP实例中没有安装OpenSSL扩展,因此https://包装器不可用。

From the manual

  

注意:仅在启用openssl扩展时支持HTTPS。

And

  

要使用PHP的OpenSSL支持,您还必须编译PHP --with-openssl [= DIR]。

您需要使用OpenSSL扩展重新编译PHP。

或者,正如其他人所建议的那样,您可以将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()可能不是您想要做的。你不可能对图像做的唯一事情是获得它的大小,你可能会在你的页面上显示它或以其他方式操纵它,如果是这种情况,你最终会不止一次下载它。 / p>

您应该将其下载到临时目录,然后处理它的本地副本。

答案 1 :(得分:1)

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

我想这有助于将https://删除到http://

答案 2 :(得分:0)

我对此进行了测试,但效果很好。

$url = "https://path/to/image.jpg";
$url = str_replace("https://", "http://", $url);
$size = getimagesize($url);