【问题标题】:Laravel "Can't write image data to path" errorLaravel“无法将图像数据写入路径”错误
【发布时间】:2015-11-06 21:18:16
【问题描述】:

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

任何帮助将不胜感激。

【问题讨论】:

  • 听起来您要保存到的目录不可写 (777)。
  • 看起来您可能还想在路径中添加更多信息,例如'/path/to/images/user/'.$id. ...
  • @JoelHinz,我认为user/$id/randomString 就足够了吗?不过,我不认为这是导致问题的原因。
  • 嗯,是的,如果你想把它上传到 Laravel 的根文件夹。你不想至少把它放在公用文件夹中吗?
  • 我以为会默认进入公共目录?我的意图是把它放在那里!

标签: php laravel laravel-5 intervention


【解决方案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

【讨论】:

    猜你喜欢
    • 2020-03-29
    • 2020-05-07
    • 2016-07-24
    • 2023-01-09
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    相关资源
    最近更新 更多