无法使用Intervention库将图像数据写入laravel中的路径

时间:2014-08-26 03:44:14

标签: php laravel

我正在使用Laravel 4.2和Intervention库,我不知道为什么当其他一切看起来正确时我会遇到这个问题。这是代码:

Route::post('test',function()
{
    // check if files was sent
    if(Input::hasFile('file'))
    {
        $image = Input::file('file');
        $filename = date('Y-m-d-H:i:s').'-'.$image->getClientOriginalName();
        $path = public_path('images/cars/'.$filename);
        Image::make($image->getRealPath())->resize(468,249)->save($path);

    } else {
        return Response::json(array('test'=>false));
    }
});

我收到的错误是:

  

干预\ Image \ Exception \ NotWritableException无法将图像数据写入路径(C:\ xampp \ htdocs \ jacars_project \ public / images / cars / 2014-08-26-03:41:39-icon_2034。 PNG)。

先谢谢你帮助我解决问题

7 个答案:

答案 0 :(得分:11)

你可以检查目录是否存在,如果没有这样的目录则创建它:

        if (!file_exists($save_path)) {
            mkdir($save_path, 666, true);
        }

答案 1 :(得分:5)

只需改变一下:

$path = public_path('images/cars/'.$filename);

对此:

$path = 'images/cars/' . $filename;

另外,请确保目标path/location是可写的,具有写入权限。

答案 2 :(得分:2)

几个小时后,我找到了适用于Centos 8的解决方案(但它也适用于其他人)。 我们需要为将要保存图像的文件夹分配必要的权限。而且使用“ chmod”命令还不够,您需要使用

httpd_sys_content_t

httpd_sys_rw_content_t

Ex:从命令行进入Laravel项目的文件夹,进入 “ / public” 文件夹并执行以下命令以授予对 “ /图像” 文件夹:

chown –R apache: images
chmod –R 755 images
systemctl restart httpd
chcon -R -t httpd_sys_content_t images
chcon -R -t httpd_sys_rw_content_t images
systemctl restart httpd

注意:(“ chown -R apache:images”在其他Linux版本中替代了等效的“ chown -R www-data:images”。)

答案 3 :(得分:1)

首先创建目录,我将把我的图像文件解决问题。

Ex:首先创建public/images/cars/目录。然后你现在可以将图像保存在那里。

  

PS:但是如果你想动态创建文件夹,我不知道该怎么做。

答案 4 :(得分:1)

如果您使用的是Ubuntu-> sudo chmod -R 777 public

答案 5 :(得分:0)

如果您使用的是共享主机,请不要使用 public_path() 辅助函数来指向上传位置。简单地放置位置,您就可以开始了:

改变 公共路径(上传路径)

只到 上传路径

答案 6 :(得分:0)

就我而言,它没有对该文件夹的权限, 带有 755 的 chmod 完成了这项工作。

chmod -R 755