通过PHP SDK为AWS S3创建CORS规则

通过PHP SDK为AWS S3创建CORS规则,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,这已经让我疯狂了好几天,我知道我错过了一些简单的事情。我一直在尝试为我使用PHPSDK动态创建的bucket更新CORS 这就是我试图从我找到的各种教程中整理出来的:(有一件事我不确定,那就是发送多个AllowedMethods的首选方法) 上面返回以下错误: 致命错误:未捕获异常“InvalidArgumentException”,消息“验证为PutBucketCors操作提供的输入时发现1个错误:[CORSConfiguration]必须是关联数组。” 我已尝试使用此页面中的信息提供帮助,但

这已经让我疯狂了好几天,我知道我错过了一些简单的事情。我一直在尝试为我使用PHPSDK动态创建的bucket更新CORS

这就是我试图从我找到的各种教程中整理出来的:(有一件事我不确定,那就是发送多个AllowedMethods的首选方法)

上面返回以下错误:

致命错误:未捕获异常“InvalidArgumentException”,消息“验证为PutBucketCors操作提供的输入时发现1个错误:[CORSConfiguration]必须是关联数组。”

我已尝试使用此页面中的信息提供帮助,但我知道它已过时:

我已经通过AWS控制台验证了bucket的存在和创建。任何帮助都将不胜感激。谢谢大家!

编辑:我能够从现有的桶中取出CORS,这就是它给我的。仍在试图找出如何设置阵列以创建:

 data:Aws\Result:private] => Array ( 

[CORSRules] => Array ( [0] =>


 Array ( [AllowedHeaders] => Array ( [0] => * )

 [AllowedMethods] => Array ( [0] => GET [1] => POST [2] => PUT )
 [AllowedOrigins] => Array ( [0] => * )[
 MaxAgeSeconds] => 3000 ))

好的,经过大量的尝试和错误,我最终找到了答案。我继续将CORSRules设置为一个单独的数组,只是为了使代码更具可读性。以下是我的想法,以防有人和我同舟共济:

    $cors = array(array(
        'AllowedOrigins' => array('*'),
        'AllowedMethods' => array('POST', 'GET', 'PUT'),
        'MaxAgeSeconds' => 3000,
        'AllowedHeaders' => array('*')
    ));

   $result = $s3Client->putBucketCors(array(
        'Bucket' => $bucket,
        'CORSConfiguration' => array('CORSRules' => $cors)
    ));
从Feyyaz()共享的文档中读取,CORSConfiguration充当容器,其中CORSRules是关联键


我希望这能帮助那些发现自己与我同舟共济的人。

在你分享的文档中说
CORSRules
不是
corscoConfiguration
你知道吗?或者是因为文档不是最新的?我注意到文档中的内容有所不同。我找不到最新版本的PHP SDK的工作示例。我使用了CORSConfiguration,因为在我尝试CORSRules时它不断向我抛出错误:致命错误:未捕获异常“InvalidArgumentException”,消息为“验证PutBucketCors操作提供的输入时发现1个错误:[CORSConfiguration]丢失,是一个必需参数”谢谢您的快速回复!我尝试了上述操作,并得到以下结果:致命错误:未捕获异常“InvalidArgumentException”,消息为“验证为PutBucketCors操作提供的输入时发现1个错误:[CORSConfiguration]缺失,是必需的参数”。将CORSRules替换为CORSConfiguration会显示我发布的原始错误消息:[CORSConfiguration]必须是关联数组。我想这是因为文档是针对旧版本的,所以我只是想弄清楚要做哪些更改才能让它现在工作。再次感谢你。
    <?php
    $result = $s3Client->putBucketCors(array(
        'Bucket' => $bucket,
        'CORSRules' => array(
        array(
            'AllowedOrigins' => array('*'),
            'AllowedMethods' => array('POST', 'GET', 'PUT'),
            'MaxAgeSeconds' => 3000,
            'AllowedHeaders' => array('*')
        )
    )
));
    $cors = array(array(
        'AllowedOrigins' => array('*'),
        'AllowedMethods' => array('POST', 'GET', 'PUT'),
        'MaxAgeSeconds' => 3000,
        'AllowedHeaders' => array('*')
    ));

   $result = $s3Client->putBucketCors(array(
        'Bucket' => $bucket,
        'CORSConfiguration' => array('CORSRules' => $cors)
    ));