Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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
AWSS3使用PHP列出对象键_Php_Amazon Web Services_Amazon S3 - Fatal编程技术网

AWSS3使用PHP列出对象键

AWSS3使用PHP列出对象键,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,我正在使用PHP和AWSS3列出对象键 我在bucket设置中加载了一个测试文件: 以下是我在AWS文档中使用的参考: 以下是我在页面中使用的代码: 当我执行这个PHP脚本时,它只返回:“Keys retrieved!”而没有列出测试文件。它应该列出文件夹中的文件 当我添加一个“var_dump($objects);”(在脚本中注释,因此当我取消注释它时),它会返回大量对象数据,如此屏幕截图所示: 出于某种原因,Amazon提供的这部分代码不起作用: foreach($objects作

我正在使用PHP和AWSS3列出对象键

我在bucket设置中加载了一个测试文件:

以下是我在AWS文档中使用的参考:

以下是我在页面中使用的代码:


当我执行这个PHP脚本时,它只返回:“Keys retrieved!”而没有列出测试文件。它应该列出文件夹中的文件

当我添加一个“var_dump($objects);”(在脚本中注释,因此当我取消注释它时),它会返回大量对象数据,如此屏幕截图所示:

出于某种原因,Amazon提供的这部分代码不起作用:

foreach($objects作为$object){
echo$object['Key'].PHP_EOL;
}
为什么AWS提供的代码不起作用

难道不需要钥匙和秘密吗


请帮助

您的问题很可能是由PHP AWS SDK无法从环境变量获取凭据引起的-->凭据可以从环境变量获取,也可以直接在代码中指定,如下所示:

// Instantiate the client.
$credentials = new Aws\Credentials\Credentials('<KEY>', '<SECRET>');
$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1',
    'credentials' => $credentials
]);

希望您会发现它很有用。

您应该将
var\u dump
结果粘贴为文本而不是图片-您会注意到此对象中没有
Key
元素。如果您尝试访问
http://apollos-integrations-public.s3.amazonaws.com/
您将得到一个XML文档,其中列出了文件及其密钥。@ApollosEasy:这个答案有用吗?是的,这个答案确实回答了问题。不幸的是,项目被取消了,很抱歉,我没能早点给你回复。
<?php
error_reporting(-1);
ini_set('display_errors', 'On');

require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$bucket = 'apollos-integrations-public';

// Instantiate the client.
$credentials = new Aws\Credentials\Credentials('<KEY>', '<SECRET>');

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1',
    'credentials' => $credentials
]);

// Use the high-level iterators (returns ALL of your objects).
try {
    $objects = $s3->getPaginator('ListObjects', [
        'Bucket' => $bucket
    ]);

    echo "Keys retrieved!" . PHP_EOL;
    foreach ($objects as $object) {
        echo $object['Key'] . PHP_EOL;
    }
} catch (S3Exception $e) {
    echo $e->getMessage() . PHP_EOL;
}

// Use the plain API (returns ONLY up to 1000 of your objects).
try {
    $result = $s3->listObjects([
        'Bucket' => $bucket
    ]);

    echo "Keys retrieved!" . PHP_EOL;
    foreach ($result['Contents'] as $object) {
        echo $object['Key'] . PHP_EOL;
    }
} catch (S3Exception $e) {
    echo $e->getMessage() . PHP_EOL;
}
Fatal error: Uncaught Aws\Exception\CredentialsException: Error retrieving credentials from the instance profile metadata server.