ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php-AWS S3获得预签名URL时,“自变量必须是数组类型,给定对象”是数组

2019-11-19 07:32:37  阅读:249  来源: 互联网

标签:amazon-web-services amazon-s3 php


我不明白为什么这行不通,而且我搜寻了Internet并且找不到与我使用的特定命令匹配的任何内容.

我基本上是想从Amazon S3生成一个预签名的URL,我正在按照文档中的指示操作到T,但它不起作用.实际上不是到T,我正在对T进行操作.像这样的数组:[‘Key’=> ‘Value’] …我在这里看到另一个问题,解决的答案是使用array()….但它没有任何改变.

它仍然给出此错误:

[01-Jan-2016 13:28:56 America/Los_Angeles] PHP Catchable fatal error: Argument 2 passed to Guzzle\Service\Client::getCommand() must be of the type array, object given, called in /Users/alex/Development/theshrineofdionysus-com/vendor/guzzle/guzzle/src/Guzzle/Service/Client.php on line 76 and defined in /Users/alex/Development/theshrineofdionysus-com/vendor/guzzle/guzzle/src/Guzzle/Service/Client.php on line 79

这是我正在使用的与它的S3部分相关的代码.当我看到有关键,区域和存储桶的常量正确时,请相信我,因为我还有其他S3代码在其他地方可以正常使用它们.

<?php
$s3 = Aws\S3\S3Client::factory(array(
  'key'    => AWS_ACCESS_KEY,
  'secret' => AWS_SECRET_KEY,
  'region' => AWS_REGION,
));
$cmd = $s3->getCommand('GetObject', array(
  'Bucket' => AWS_BUCKET,
  'Key' => $row['video_id']
));
$request = $s3->createPresignedRequest($cmd, '+120 minutes');
$url = (string) $request->getUri();
?>

我还知道$row [‘video_id’]等于现有文件名,因为那里没有此代码,我在回声它是正确的文件名.

这是我的composer.json:

{
    "require": {
        "aws/aws-sdk-php": "2.*",
        "php": ">=5.2.0"
    }
}

这是我在另一页上正常工作的亚马逊代码:

$s3 = Aws\S3\S3Client::factory(array(
  'key'    => AWS_ACCESS_KEY,
  'secret' => AWS_SECRET_KEY,
  'region' => AWS_REGION
));
$objects = $s3->getIterator('ListObjects', array('Bucket' => AWS_BUCKET));
foreach ($objects as $object) {
  echo '<option value="' . $object['Key'] . '">' . $object['Key'] . '</option>' . PHP_EOL;
}

解决方法:

您似乎正在遵循v3指南,但已安装v2.您可以通过调用以下命令在v2中创建一个预签名的URL:$url = $s3-> getObjectUrl(AWS_BUCKET,$row [‘video_id’],’120分钟’);

可以找到here的完整指南.

标签:amazon-web-services,amazon-s3,php
来源: https://codeday.me/bug/20191119/2034523.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有