创建amazon aws s3预签名url PHP的问题
我正在尝试使用S3 PHP SDK生成一个预签名url请求,如下所示:创建amazon aws s3预签名url PHP的问题,php,amazon-s3,Php,Amazon S3,我正在尝试使用S3 PHP SDK生成一个预签名url请求,如下所示: $cmd = self::$S3Client->getCommand('GetObject', array('Bucket' => USER_CONTENT_BUCKET_NAME,'Key' => $key)); $request = self::$S3Client->createPresignedRequest($cmd, '+20 minutes'); *USER\u CONTENT\
$cmd = self::$S3Client->getCommand('GetObject', array('Bucket' => USER_CONTENT_BUCKET_NAME,'Key' => $key));
$request = self::$S3Client->createPresignedRequest($cmd, '+20 minutes');
*USER\u CONTENT\u BUCKET\u NAME
是常量中定义的BUCKET名称。php*$key
是字符串键
如果我var\u dump($cmd)
我可以看到对象是从getCommand()
正确返回的
但是从createPresignedRequest()
调用中,我得到了一个异常-
"Argument 2 passed to Guzzle\Service\Client::getCommand() must be of the type array, object given".
帮助?问题已解决
很难理解,因为错误消息无助于理解下划线问题
Amazon在他们的3.xPHPAPI中描述,创建预签名URL的方法就是我上面尝试的方法
然而,事实证明我们使用的是亚马逊aws的2.8版。
在这种情况下,调用应如下所示:
$cmd = self::$S3Client->getCommand('GetObject', array('Bucket' => USER_CONTENT_BUCKET_NAME,'Key' => $key));
$request = self::$S3Client->createPresignedRequest($cmd, '+20 minutes');
$cmd=self::$S3Client->getCommand('GetObject',array('Bucket'=>USER\u CONTENT\u Bucket\u NAME,'Key'=>$Key))代码>
$presignedUrl=$cmd->createPresignedUrl(“+20分钟”)代码>
引发的Guzzle异常表明我调用的方法不存在
我希望这能帮助其他陷入同样处境的人