Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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
Php AWS s3文件夹上载期间未应用ACL(上载目录)_Php_Amazon Web Services_Amazon S3 - Fatal编程技术网

Php AWS s3文件夹上载期间未应用ACL(上载目录)

Php AWS s3文件夹上载期间未应用ACL(上载目录),php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,由于某些原因,当我将文件夹上载到S3存储桶时,未应用公共读取。(即,公众无法访问文件) 文件上传正常,但都设置为私有。我想尽了一切办法。感觉我错过了一些基本的东西 正在使用此指南: 这是我的密码: require '../vendor/autoload.php'; use Aws\S3\S3Client; $client = S3Client::factory(array( 'version' => '2006-03-01', 'r

由于某些原因,当我将文件夹上载到S3存储桶时,未应用公共读取。(即,公众无法访问文件)

文件上传正常,但都设置为私有。我想尽了一切办法。感觉我错过了一些基本的东西

正在使用此指南:

这是我的密码:

    require '../vendor/autoload.php';

    use Aws\S3\S3Client;

    $client = S3Client::factory(array(  
      'version' => '2006-03-01',
      'region'  => 'ap-southeast-2',
      'credentials' => array(
        'key' => 'MYKEY',
        'secret'  => 'MYSECRET',        
      )
    ));    

    $dir = 'assets';
    $bucket = 'gittestbucket';
    $keyPrefix = 'assets';      

    $options = array(
        'params'      => array('ACL' => 'public-read'),
        'concurrency' => 20,
        'debug'       => true
    );

    $UploadAWS = $client->uploadDirectory($dir, $bucket, $keyPrefix, $options);

    var_dump($UploadAWS);
我的IAM用户策略(还有一组列出所有存储桶的列表):


非常感谢您的帮助。干杯

不久前,我一直在努力解决这个问题

尝试将您的上传语句更改为下面这一条

 $UploadAWS = $client->uploadDirectory($dir, $bucket, $keyPrefix, array(
        'concurrency' => 20,
        'debug'       => true,
        'before' => function (\Aws\Command $command) {
        $command['ACL'] = strpos($command['Key'], 'CONFIDENTIAL') === false
            ? 'public-read'
            : 'private';
        }
    ));

AWS的文档有时会令人震惊,因为它变化太大了

谢谢!这很有效。不知道为什么他们的文档化示例不起作用。非常令人沮丧。
 $UploadAWS = $client->uploadDirectory($dir, $bucket, $keyPrefix, array(
        'concurrency' => 20,
        'debug'       => true,
        'before' => function (\Aws\Command $command) {
        $command['ACL'] = strpos($command['Key'], 'CONFIDENTIAL') === false
            ? 'public-read'
            : 'private';
        }
    ));