我目前正在使用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)
非常感谢任何帮助。
答案 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