[英]Can't write image data to path in laravel 8 using the Intervention library
[英]can't write image data to path in laravel using the Intervention library
我将 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));
}
});
我收到的错误是:
Intervention\Image\Exception\NotWritableException 无法将图像数据写入路径(C:\xampp\htdocs\jacars_project\public/images/cars/2014-08-26-03:41:39-icon_2034.png)。
在此先感谢您帮助我解决问题
您可以检查目录是否存在,如果没有这样的目录,则创建它:
if (!file_exists($save_path)) {
mkdir($save_path, 666, true);
}
只需更改此:
$path = public_path('images/cars/'.$filename);
对此:
$path = 'images/cars/' . $filename;
另外,请确保目标path/location
是可写的,具有写权限。
通过首先创建我将放置图像文件的目录为我解决了这个问题。
例如:首先创建public/images/cars/
目录。 然后您现在可以将图像保存在那里。
PS:但如果你想动态创建文件夹,我不知道该怎么做。
经过这么多小时,我找到了 Centos 8 的解决方案(但它也适用于其他人)。 我们需要为将保存要上传的图像的文件夹分配必要的权限。 而使用“chmod”命令是不够的,还需要使用
httpd_sys_content_t
和
httpd_sys_rw_content_t
folder and execute the following commands to give permissions to the folder:例如:从命令行我们进入我们的 Laravel 项目的文件夹,我们进入文件夹并执行以下命令来授予文件夹的权限:
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”)。
如果您尚未创建路径的文件夹,您将收到该错误。 您需要先创建它。
如果您使用的是 Ubuntu -> sudo chmod -R 777 public
就我而言,它没有文件夹的权限, chmod 和 755 完成了这项工作。
chmod -R 755
如果您在共享主机上,请不要使用 public_path() 辅助函数指向上传位置。 简单地放置位置,您就可以开始了:
更改 public_path(UPLOAD_PATH)
只到 UPLOAD_PATH
问题是权限问题,只要进入你的目录,给它读写权限,你的问题就解决了
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.