2010-11-23 6 views
1

Я использую эту функцию:PHP: getimagesize() при отсутствии на LAMP-сервер

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; ?> 

... где $ 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 в папку с изображениями. Я сейчас в недоумении.

+0

можете ли вы перейти на http://dev.projectname.co.uk/images/collection/whatever.image.ext в своем браузере без входа в веб-сайт? Это звучит как стандартная проблема HTTP-аутентификации – superfro 2010-11-23 22:15:32

ответ

4

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

1

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

Смежные вопросы