2

現在、Laravel 内で Intervention Image パッケージを使用しています。

ユーザーがロゴをアップロードできるようにしたいと考えています。これまでのところ、私は次のものを持っています:

public function postUpdateLogo($id) {

    if(Input::file())
    {

        $image = Input::file('logo');
        $filename  = time() . '.' . $image->getClientOriginalExtension();

        \Image::make($image->getRealPath())
                  ->resize(300, 300)
                  ->save('user/'. $id . '/' . $filename);
        $user->image = $filename;
        $user->save();
    }
}

しかし、送信時に発生するエラーは次のとおりです。

Image.php 行 143 の NotWritableException: 画像データをパス (user/1/1439491280.png) に書き込めません

どんな助けでも大歓迎です。

4

1 に答える 1

1

私もこの問題に遭遇しました。Stuard が public フォルダーに書き込みたいと提案したからです。

$filename  = time() . '.' . $image->getClientOriginalExtension();
$path = public_path("user/".$id."/".$filename);

\Image::make($image->getRealPath())->resize(300, 300)->save($path);

次に、Apacheをそのパブリックフォルダーの所有者にすることで、問題(ubuntu、apache、laravel 5のセットアップ)を修正できました。

sudo chown -R www-data:www-data /home/youruser/www/dev.site.com/public/user

適切なフォルダーのアクセス許可を追加します。

~$ sudo chmod 755 -R user

完璧な解決策ではないかもしれませんが、うまくいくでしょう。

編集 - 可能な 2 番目のオプション:

パブリック フォルダーの現在のグループ所有者を確認し、そのグループに apache ユーザー (www-data) を追加するのが 2 番目のオプションかもしれません (達人が同意してくれることを願っています)。

sudo adduser www-data theownergroup
于 2016-04-03T10:54:59.713 に答える