使用 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的主要内容,如果未能解决你的问题,请参考以下文章

Jcrop 图像干预 Laravel 5

无法安装 Laravel 包 - 干预图像

“无法将图像数据写入路径” - Laravel 图像干预

如何使用干预图像laravel将webp图像转换为jpeg或png

使用 Laravel 4 的干预 \ Image \ Exception \ ImageNotWritableException

此集合实例上不存在异常属性 [图像]