PHP getimagesize пустой вывод

<?php
$URL="http://cor-forum.de/forum/images/smilies/zombie.png";
list($width, $height) = getimagesize($URL);

echo 'width: '.$width.'<br>
height: '.$height;
?>

Это приводит к следующему результату:

width:
height:

РЕДАКТИРОВАТЬ, и я получаю следующее предупреждение:

Предупреждение: getimagesize(http://cor-forum.de/forum/images/smilies/zombie.png): не удалось открыть поток: Ошибка HTTP-запроса! HTTP/1.1 403 Запрещено в /html/test.php в строке 6

-- тогда как он отображает правильные значения, если я использую другое изображение, например

$URL='http://getfavicon.appspot.com/http://google.com?defaulticon=1pxgif';

РЕДАКТИРОВАТЬ: я хотел бы включить включение внешних изображений в форум, но я хочу сначала проверить их размер. Итак, что я могу сделать, чтобы получить размер изображения, сервер которого меня блокирует?

РЕДАКТИРОВАТЬ: для параметра allow_url_fopen установлено значение ON, да.


person phil294    schedule 10.08.2014    source источник
comment
allow_url_fopen установлен?   -  person marco-a    schedule 10.08.2014
comment
Включите правильную отчетность об ошибках.   -  person CBroe    schedule 10.08.2014
comment
попробовал еще раз, все равно разные выходы. Однако сейчас я смог получить предупреждение. Исправил стартовый пост. Что это обозначает? С уважением   -  person phil294    schedule 10.08.2014
comment
@Blauhirn кажется, что сервер блокирует вас.   -  person marco-a    schedule 10.08.2014
comment
Похоже, домен пытается запретить горячие ссылки на изображения (что может сильно ударить по пропускной способности). Почему бы тебе не использовать собственное изображение?   -  person Jared Farrish    schedule 10.08.2014
comment
это не звучит хорошо. Я хочу разрешить включение внешних изображений в форум, но сначала хочу проверить их размер. Что я могу сделать, чтобы получить размер изображения, чей сервер все равно меня блокирует? (собираюсь написать это же предложение в стартовом посте)   -  person phil294    schedule 10.08.2014
comment
@Blauhirn Это зависит от того, как сервер вас блокирует ... большинство серверов используют ваш http-реферер в качестве индикатора.   -  person marco-a    schedule 10.08.2014
comment
Для внутреннего URL требуется urlencode()   -  person Daniel W.    schedule 14.07.2020


Ответы (3)


Подделка поля реферера HTTP, кажется, работает на этом:

<?php
function getimgsize($url, $referer = '')
{
    $headers = array(
                    'Range: bytes=0-32768'
                    );

    /* Hint: you could extract the referer from the url */
    if (!empty($referer)) array_push($headers, 'Referer: '.$referer);

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($curl);
    curl_close($curl);

    $image = imagecreatefromstring($data);

    $return = array(imagesx($image), imagesy($image));

    imagedestroy($image);

    return $return;
}

list($width, $heigth) = getimgsize('http://cor-forum.de/forum/images/smilies/zombie.png', 'http://cor-forum.de/forum/');

echo $width.' x '.$heigth;
?>

Источник кода

person marco-a    schedule 10.08.2014

Похоже, у вас возникли проблемы с указанным URL-адресом, можете ли вы попробовать приведенный ниже код. Я ничего не делал, просто изменил URL-адрес,

URL = "http://forums.phpfreaks.com/uploads/profile/photo-thumb-68615.jpg";
list($width, $height) = getimagesize($URL);
echo 'width: ' . $width . '<br>height: ' . $height;
person prashant thakre    schedule 10.08.2014
comment
да, это работает, проблема определенно в URL-адресе - person phil294; 10.08.2014
comment
Я просмотрел этот сайт и перепробовал все URL-адреса, ничего не работает, на самом деле к нему запрещен доступ другими способами. - person prashant thakre; 10.08.2014

установите ограничение памяти PHP на максимум 256 МБ, чтобы исправить это

person Khurram Ansari    schedule 18.01.2018