我正在升级一个使用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“上执行"https://s3.region.amazonaws.com/folder/file.ext”时出错。 客户端错误:
PUT https://s3.region.amazonaws.com/folder/file.ext导致403 Forbidden响应 我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。
我使用的是我在v2系统中使用的相同的v2和秘密。
据我所知,负责签名计算的PHP .因为我没有手工计算。
我做错什么了?有什么办法解决吗?
发布于 2019-07-11 20:42:47
刚刚找到了我问题的答案。
问题是:在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。
https://stackoverflow.com/questions/56533140
复制相似问题