League\\Flysystem\\AwsS3v3\\AwsS3Adapter::__construct():参数 #1 ($client) 的类型必须为 Aws\\S3Client,给定的 Aws\\S3\\S3Client

NIK*_*ATH 4 amazon-s3 amazon-web-services laravel laravel-filesystem laravel-8

Laravel 8我通过在项目中运行以下 Composer 命令安装了 s3 Flysystem 软件包

composer require --with-all-dependencies league/flysystem-aws-s3-v3 "^1.0"
Run Code Online (Sandbox Code Playgroud)

并尝试将请求中的文件存储为

$imageName = $request->file('file')->store('uploads');
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

League\Flysystem\AwsS3v3\AwsS3Adapter::__construct():参数 #1 ($client) 必须是 Aws\S3Client 类型,Aws\S3\S3Client 给定,在 D:\Projects\Rescale\vendor\laravel\framework\ 中调用src\Illuminate\Filesystem\FilesystemManager.php 第 229 行

小智 21

所以看来 ThePHPLeague Flysystem 主要版本已更新(到 v2),从而破坏了很多东西,因为最新的 Laravel 依赖于“^1.1”(请参阅​​:https://github.com/laravel/framework/blob/8.x/composer .json#L27 )。

我遇到了这个错误,所以我的解决方法是使用特定版本。


  1. 转到composer.json并使用最新的v1(请参阅: https: //github.com/thephpleague/flysystem-aws-s3-v3/tags)。
- "league/flysystem-aws-s3-v3": "^1.0",
+ "league/flysystem-aws-s3-v3": "1.0.29",
Run Code Online (Sandbox Code Playgroud)
  1. 运行composer update并让 Composer 更新您的依赖项。