Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建amazon aws s3预签名url PHP的问题_Php_Amazon S3 - Fatal编程技术网

创建amazon aws s3预签名url PHP的问题

创建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\

我正在尝试使用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\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异常表明我调用的方法不存在

我希望这能帮助其他陷入同样处境的人