通过PHP SDK为AWS S3创建CORS规则
这已经让我疯狂了好几天,我知道我错过了一些简单的事情。我一直在尝试为我使用PHPSDK动态创建的bucket更新CORS 这就是我试图从我找到的各种教程中整理出来的:(有一件事我不确定,那就是发送多个AllowedMethods的首选方法) 上面返回以下错误: 致命错误:未捕获异常“InvalidArgumentException”,消息“验证为PutBucketCors操作提供的输入时发现1个错误:[CORSConfiguration]必须是关联数组。” 我已尝试使用此页面中的信息提供帮助,但我知道它已过时: 我已经通过AWS控制台验证了bucket的存在和创建。任何帮助都将不胜感激。谢谢大家! 编辑:我能够从现有的桶中取出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]必须是关联数组。” 我已尝试使用此页面中的信息提供帮助,但
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)
));