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 建议您可能想在公用文件夹中写入。

$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

可能不是一个完美的解决方案,但会让你继续前进。

编辑 - 可能的第二个选项:

检查公用文件夹的当前组所有者,然后将 apache 用户(www-data)添加到该组可能是第二种选择(希望专家同意):

sudo adduser www-data theownergroup
于 2016-04-03T10:54:59.713 回答