繁体   English   中英

通过PHP SDK实现S3客户端初始化错误

[英]S3 client initialization error via PHP SDK

我正在尝试从AWS PHP SDK初始化S3客户端。 我的代码如下:

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

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

但是我收到以下错误:

遇到PHP错误

严重程度:4096

消息:传递给Aws \\ Common \\ Client \\ AbstractClient :: __ construct()的参数1必须实现接口Aws \\ Common \\ Credentials \\ CredentialsInterface,给定的数组,在/ opt / showhouse / www / application / models / showhouse / common / services中调用第47行/aws/aws.php并定义了Filename:Client / AbstractClient.php

行号:73

我出错的任何想法? 我使用的是通过Composer安装的最新版本的SDK。

我猜你正在使用AWS PHP SDK 2.0版。 如果是这样,那么S3Client确实实现了AbstractClient类。 这意味着参数是:__ construct(Aws \\ Common \\ Aws \\ Common \\ Credentials \\ CredentialsInterface $ credentials,Aws \\ Common \\ Aws \\ Common \\ Signature \\ SignatureInterface $ signature,Guzzle \\ Common \\ Collection $ config)

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

建议:尝试使用下载的zip文件来安装AWS SDK而不是Composer

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

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

但是,在阅读Grilly的有用答案后,我决定尝试使用下载的zip文件来安装AWS SDK。 我安装这种方式后问题就消失了。

从zip文件中包含的README文件中,我可以找到使用下载的zip文件安装的AWS SDK版本为3.0的通知。 虽然我无法检查使用Composer安装的AWS SDK的版本,因为我找不到如何,我猜测使用Composer安装的AWS SDK版本有点老,足以导致问题。

我有同样的问题,并通过使用PHP 5.6与AWS SDK v3.x修复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM