1

私はこの機能を使用しています:

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 は DB からのものです (成功)。そして、次のエラーが発生します。

警告: getimagesize(http://dev.projectname.co.uk/images/collection/filename.jpg) [function.getimagesize]: ストリームを開くことができませんでした: HTTP 要求が失敗しました! /var/www/projectname.co.uk/dev/admin/includes/functions_admin.php 行 59 width="" height="" alt="filename.jpg" /> で HTTP/1.1 401 認証が必要です

getimagesize() を使用して、最初にサーバー上の www-data ユーザーに権限を与えたフォルダーから画像のサイズを取得しています。その後、再びエラーが発生したときに、画像フォルダーに 777 を chmod しました。私は今途方に暮れています。

4

2 に答える 2

4

答えは簡単でした。URL を使用してサーバー上のフォルダーにアクセスしようとしましたが、代わりにサーバー上のフォルダーへの絶対パスが必要でした。これはローカルマシンで機能し、亀裂をすり抜けて開発サーバーに到達しました.

于 2010-11-23T22:13:42.783 に答える
1

問題はそうではなくgetimagesize()、パスワードで保護された URL から取得しようとしていることです。ユーザー名とパスワードを URL の一部として渡すか、別の方法で取得します。

于 2010-11-23T22:14:55.913 に答える