PHP getimagesize无法处理外部链接

时间:2016-05-30 17:40:25

标签: php fopen mod-security getimagesize safe-mode

我的服务器上在远程网址图片上运行 getimagesize 时遇到了一些问题。

例如,如果我在本地服务器上运行此代码,它可以正常工作并返回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
  4. 你能帮我确定正确的配置来解决这个问题吗?

    非常感谢你。

2 个答案:

答案 0 :(得分:4)

您的问题与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

答案 1 :(得分:1)

您必须在allow_url_fopen文件中启用php.ini才能允许其访问非本地资源。

这在filename参数说明中getimagesize的官方文档中有详细说明。