我正在使用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)。
先谢谢你帮助我解决问题
答案 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