Laravel 5中S3 flysystem适配器的路径不正确

时间:2015-07-01 17:13:03

标签: php amazon-s3 laravel-5

将文件上传到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

1 个答案:

答案 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());

希望这有助于其他可能遇到此问题的人。