Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

S3 client initialization error via PHP SDK

I'm trying to initialize the S3 client from the AWS PHP SDK. My code is as follows:

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

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

But am getting the following errors:

A PHP Error was encountered

Severity: 4096

Message: Argument 1 passed to Aws\Common\Client\AbstractClient::__construct() must implement interface Aws\Common\Credentials\CredentialsInterface, array given, called in /opt/showhouse/www/application/models/showhouse/common/services/aws/aws.php on line 47 and defined Filename: Client/AbstractClient.php

Line Number: 73

Any ideas where I am going wrong? Am using the latest version of the SDK installed via Composer.

like image 793
Adrian Walls Avatar asked Nov 08 '15 12:11

Adrian Walls


2 Answers

I'm guessing you are using AWS PHP SDK version 2.0. If so, then the S3Client indeed implements the AbstractClient class. This means that the parameters are: __construct( Aws\Common\Aws\Common\Credentials\CredentialsInterface $credentials, Aws\Common\Aws\Common\Signature\SignatureInterface $signature, Guzzle\Common\Collection $config )

The S3Client implementation you are attempting to use is from version 3.0 of the AWS PHP SDK.

like image 54
Gilly Avatar answered Oct 06 '22 21:10

Gilly


Recommendation: Try using a downloaded zip file to install AWS SDK instead of Composer

I had the same problem when I used Composer to install AWS SDK because it appeared to be the recommended way in AWS documentation from the following URL.

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

But, after reading the helpful answer by Grilly, I decided to try using a downloaded zip file to install AWS SDK. The problem disappeared after I installed this way.

From a README file contained in the zip file, I could find a notification that the version of AWS SDK installed using the downloaded zip file was 3.0. Although I couldn't check version of AWS SDK installed using Composer because I couldn't find how, I am guessing that the version of AWS SDK installed using Composer was somewhat old enough to cause the problem.

like image 25
Youngjin Jeon Avatar answered Oct 06 '22 22:10

Youngjin Jeon