升级 AWS PHP SDK 版本时访问 S3 错误

S3 error access when upgrading AWS PHP SDK versions

我正在将使用 aws-php-sdk v2 的系统升级到 aws-php-sdk v3

v2 我有类似的东西:

$this->s3->upload($bucket, $key, $file, 'public-read');
//Where $this->s3 is a S3Client instance (from the SDK).

而且效果很好。

现在,升级到 aws-php-sdk v3 后,它会抛出一个错误:

Error executing "PutObject" on "https://s3.region.amazonaws.com/folder/file.ext".

Client error: PUT https://s3.region.amazonaws.com/folder/file.ext resulted in a 403 Forbidden response

The request signature we calculated does not match the signature you provided. Check your key and signing method.

我使用的是我在 v2 系统中使用的相同 accessKey 和密码。

据我所知,负责签名计算的是PHP SDK。因为我没有手动进行任何计算。

我做错了什么?有什么解决办法吗?

刚刚找到问题的答案。

问题是:在 aws-php-sdk v2 我有这个代码:

$bucket = "mybucketname/myfolder";
$key = "myfilename.jpg";
$upload = $this->app->S3->upload($bucket, $key, fopen( $local , 'rb'), 'public-read');

这很好用,它没有显示任何 warnings/errors,但是当升级到 aws-php-sdk v3 时它不起作用。 我刚刚将 $bucket$key 值更改为:

$bucket = "mybucketname";
$key = "myfolder/myfilename.jpg";
$upload = $this->app->S3->upload($bucket, $key, fopen( $local , 'rb'), 'public-read');

而且效果很好!

v2没有抱怨,在v3.

真的很奇怪