2015-11-08 89 views
3

我想从AWS PHP SDK初始化S3客户端。我的代码如下:通过PHP SDK S3客户端初始化错误

$credentials = new Credentials(self::KEY, self::SECRET); 

$s3_client = new S3Client([ 
    'version'  => 'latest', 
    'region'  => $region, 
    'credentials' => $credentials 
]); 

,但我收到以下错误:

遇到

一个PHP错误

严重性:4096

消息:参数1传递给AWS \ Common \ Client \ AbstractClient :: __ construct()必须实现在/opt/showhouse/www/application/models/showhouse/common/services/aws/aws.php在线调用的接口Aws \ Common \ Credentials \ CredentialsInterface, 47 an d定义 文件名:客户端/ AbstractClient.php

行号:73

任何想法,我要去的地方错了吗?我正在使用通过Composer安装的最新版本的SDK。

回答

4

我猜你正在使用AWS PHP SDK版本2.0。如果是这样,那么S3Client确实实现了AbstractClient类。这意味着该参数是: __construct(AWS \ COMMON \ AWS \ COMMON \证书\ CredentialsInterface $凭据,AWS \ COMMON \ AWS \ COMMON \签名\ SignatureInterface $签名,狂饮\ COMMON \收集$配置)

您尝试使用的S3Client实现来自AWS PHP SDK的3.0版本。

1

我使用Composer安装AWS SDK时遇到了同样的问题,因为它似乎是来自以下URL的AWS文档中的推荐方式。

https://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/installation.html

但是,通过格里利读有用的答案后,我决定尝试通过下载的zip文件安装AWS SDK虽然有来自谷歌称,谷歌不推荐它的文档。我这样安装后问题就消失了。

我可以在压缩文件中包含的自述文件中找到通知,通过下载zip文件安装的AWS SDK版本为3.0。而且,我无法检查使用作曲家安装的AWS SDK版本,因为我无法找到它。但是我猜想通过使用composer安装的AWS SDK的版本已经足够大了,足以导致问题了。