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

升级AWS PHP SDK版本时的S3错误访问,php,aws-php-sdk,Php,Aws Php Sdk,我正在将一个使用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之后,它会抛出一个错误: 在“”上执行“PutObject”时出错 客户端错误:PUT

我正在将一个使用
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之后,它会抛出一个错误:

在“”上执行“PutObject”时出错

客户端错误:
PUThttps://s3.region.amazonaws.com/folder/file.ext
导致
403禁止响应

我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法

我使用的访问密钥和密码与我在
v2
系统中使用的相同

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


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

刚刚找到了我问题的答案

问题是:在aws php sdk v2中,我有以下代码:

$bucket = "mybucketname/myfolder";
$key = "myfilename.jpg";
$upload = $this->app->S3->upload($bucket, $key, fopen( $local , 'rb'), 'public-read');
这工作正常,不会显示任何警告/错误,但升级到
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
中却没有抱怨,这真的很奇怪。看看这个,也许对你有帮助。这对我有用。@Refilon刚刚读了那个问题。我试图用
$bucket=$this->s3->listbackes()读取存储桶列表;foreach($bucket['bucket']作为$bucket){echo$bucket['Name']。“\n”}
它工作了,它会回显可用的bucket。。。所以这不是钥匙或钥匙的问题secret@AshiqurRahman你的链接等于Refilon链接。。。还有其他想法吗?@Spenced,我当时使用的是
v3.96.0
,刚升级到
v3.101.0
,得到了同样的错误