使用 Laravel 4 的干预\图像\异常\NotWritableException
Posted
技术标签:
【中文标题】使用 Laravel 4 的干预\\图像\\异常\\NotWritableException【英文标题】:Intervention \ Image \ Exception \ NotWritableException using Laravel 4使用 Laravel 4 的干预\图像\异常\NotWritableException 【发布时间】:2014-07-16 03:55:26 【问题描述】:我正在使用 Laravel 4。当一切似乎都正确时,我不确定为什么会出现此错误。此外,产品没有更新到数据库。
无法将图像数据写入路径(E:\wamp\www/E:\wamp\www/img/products/1405482517.jpg)
产品控制器
public function postCreate()
$validator = Validator::make(Input::all(), Products::$rules);
if($validator->passes())
$products = new Products();
$products->category_id = Input::get('category_id');
$products->title = Input::get('title');
$products->description = Input::get('descroption');
$products->price = Input::get('price');
$image = Input::file('image');
$filename = time() . '.' . $image->getClientOriginalExtension();
$path = public_path('img/products/' . $filename);
Image::make($image->getRealPath())->resize(468, 249)->save(public_path($path));
$products->image = 'img/products/'.$filename;
$products->save();
return Redirect::to('admin/products')
->with('message', 'Products added success');
else
return Redirect::to('admin/products')
->with('message', 'Something went wrong')
->withErrors($validator)
->withInput();
【问题讨论】:
听起来您的产品目录没有写权限。不确定您是否粘贴错误,但您的 else 语句缺少 括号。 【参考方案1】:确保您拥有对 public/img/products
文件夹的正确权限,例如chmod 775 public/image/products
在您的终端中。
另一件事是,您执行 public_path() 两次,这导致您的代码尝试保存到:
E:\wamp\www/E:\wamp\www/img/products/1405482517.jpg
而不是
E:\wamp\www/img/products/1405482517.jpg
因此出现错误消息:“无法将图像数据写入路径 (E:\wamp\www/E:\wamp\www/img/products/ 1405482517.jpg)"
要修复它,这是导致问题的代码部分:
$path = public_path('img/products/' . $filename);
Image::make($image->getRealPath())->resize(468, 249)->save(public_path($path));
您必须尝试删除上述两个public_path()
之一。
当然,您在数据库中看不到您的产品,因为在执行$products->save();
之前就抛出了异常。
【讨论】:
我在保存方法中删除了 public_path 但新的错误消息 => (无法将图像数据写入路径(E:\wamp\www/img/products/1405519709.jpg)我的项目路径是:在路径中找不到 E:\wamp\www\ecom ecom 文件夹。这是问题 听起来你已经自定义了你的 laravel 文件夹结构?最简单的修复当然是将img/products/
更改为ecom/img/products
。让我们知道您是如何构建文件夹的,我想这将有助于获得更好的解决方案。以上是关于使用 Laravel 4 的干预\图像\异常\NotWritableException的主要内容,如果未能解决你的问题,请参考以下文章
如何使用干预图像laravel将webp图像转换为jpeg或png
使用 Laravel 4 的干预 \ Image \ Exception \ ImageNotWritableException