将文件上传到S3存储桶时,我遇到了Laravel 5文件系统的问题。运行到文件系统的行是:
Storage::disk('s3')->put($slug, $img);
它适用于:
Storage::disk('local')->put($slug, $img);
但是当我将磁盘更改为S3时,它会抛出以下错误:
Class 'League\Flysystem\AwsS3v3\AwsS3Adapter' not found
根据L5文档,我的composer.json
中有以下要求"league/flysystem-aws-s3-v2": "~1.0"
安装了联盟的aws flysystem适配器:
League\flysystem-aws-s3-v2\
我尝试将文件系统供应商文件夹中fileSystemManager.php中的路径更新为aws flysystem安装路径,但它仍然无效。我似乎无法找到任何经历过这种行为的人。
一双新鲜的眼睛或知识渊博的头脑,他们可能对Laravel了解得比我更了解。我真的无法解决这个问题。
更新
我重新安装了aws flysystem但没有得到以下内容:
ErrorException in Util.php line 250:
fstat() expects parameter 1 to be resource, object given
答案 0 :(得分:12)
好的,所以我通过删除我aws/aws-sdk-php : "^2.8.*
中的composer.json
来修复了最初的问题,然后运行了一个新的'composer require league / flysystem-aws-s3-v3~1.0'。这修复了找到S3飞系统的初始错误。
第二个错误fstat() expects parameter 1 to be resource, object given
与我尝试将图像对象传递给put方法有关:
Storage::disk('s3')->put($slug, $img);
当它需要一个字符串时。这是通过字符串化$ img对象
来解决的Storage::disk('s3')->put($slug, $img->__toString());
希望这有助于其他可能遇到此问题的人。