Laravel"不能将图像数据写入路径"错误

时间:2015-08-13 18:46:02

标签: php laravel laravel-5 intervention

我目前正在使用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:无法将图像数据写入   path(user / 1/1439491280.png)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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