PHP getimagesize 无法处理外部链接

PHP getimagesize not working on external links

我的服务器在 运行ning getimagesize 远程 url 图像上有一些问题。

例如,如果我 运行 这段代码在我的本地服务器上工作正常并且 returns OK:

<?php
$file = 'http://inspiring-photography.com/wp-content/uploads/2012/04/Culla-bay-rock-formations-Isle-of-Uist.jpg';
$pic_size = getimagesize($file);
if (empty($pic_size))
{
    die('FALSE');
}
die('OK');

?>

但是,如果我 运行 在我的服务器上使用相同的代码,我将无法使其正常工作。你能帮助确定我应该要求启用哪些设置吗?

我认为可能涉及到以下几点:

  1. mod_security
  2. safe_mode
  3. allow_url_fopen

你能帮我确定正确的配置来解决这个问题吗?

非常感谢您。

您必须在 php.ini 文件中打开 allow_url_fopen 才能允许它访问非本地资源。

这个在getimagesize的官方文档中对filename参数的说明中有规定

allow_url_fopen 关闭。在您的 php.ini 上启用它,或使用 curl 获取图像:

function getImg($url){
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($curl);
    curl_close($curl);
    return $data;
}

$url = "http://inspiring-photography.com/wp-content/uploads/2012/04/Culla-bay-rock-formations-Isle-of-Uist.jpg";
$raw = getImg($url);
$im = imagecreatefromstring($raw);
$width = imagesx($im);
$height = imagesy($im);
echo $width." x ".$height;

SRC