升级AWS PHP SDK版本时出现S3错误访问权限

时间:2019-06-10 20:31:30

标签: 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后,它会引发错误:

  

在“ https://s3.region.amazonaws.com/folder/file.ext”上执行“ PutObject”时出错。

     

客户端错误:PUT https://s3.region.amazonaws.com/folder/file.ext导致403 Forbidden响应

     

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

我使用的是与v2系统中使用的相同的accessKey和机密。

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

我做错了什么?有什么解决方法的想法吗?

1 个答案:

答案 0 :(得分:0)

刚找到我问题的答案。

问题是:在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中却没有抱怨。