PHP: getimagesize () не работает на сервере LAMP - PullRequest
1 голос
/ 24 ноября 2010

Я использую эту функцию:

function image_resizer($max_width,$max_height,$img_path) {
    list($width, $height) = getimagesize($img_path);
    if (($width > $max_width) or ($height > $max_height)) {
        $ratioh = $max_height/$height;
        $ratiow = $max_width/$width;
        $ratio = min($ratioh, $ratiow);

        $width = intval($ratio*$width);
        $height = intval($ratio*$height);
    }
    return 'width="' . $width . '" height="' . $height . '"';
}

... вызывается с этим кодом (определения находятся в другом файле, вставленном здесь для иллюстрации):

define("SITE_URI", "http://dev.projectname.co.uk/");
define("PRODUCT_IMAGES_URI", "images/collection/");
<?php echo image_resizer(280, 375, SITE_URI . PRODUCT_IMAGES_URI . $display_image); ?> alt="<?php echo $display_image; ?>

...where $ display_image приходит из БД (успешно).И получаю следующую ошибку:

Предупреждение: getimagesize (http://dev.projectname.co.uk/images/collection/filename.jpg) [function.getimagesize]: не удалось открыть поток: запрос HTTP не выполнен! HTTP / 1.1 401 Требуется авторизация в /var/www/projectname.co.uk / dev / admin / includes / functions_admin.php в строке 59 width = "" height = "" alt = "filename.jpg" />

Я использую getimagesize (), чтобы получить размеризображение из папки, которую я изначально дал права пользователю www-data на сервере, затем, когда я снова получил ошибку, я просто ввел chmod 777 в папку изображения. Теперь я в растерянности.

Ответы [ 2 ]

4 голосов
/ 24 ноября 2010

Ответ был прост: я пытался использовать URL-адрес для доступа к папке на сервере, мне нужен был абсолютный путь к папке на сервере.Это сработало на локальной машине и проскользнуло через трещины на сервер разработки.

1 голос
/ 24 ноября 2010

Проблема не в getimagesize(), проблема в том, что вы пытаетесь получить ее с защищенного паролем URL. Либо передайте имя пользователя и пароль как часть URL-адреса, либо получите его другим способом.

...