Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.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 Amazon s3 |格式错误的DXML状态代码:400_Php_Amazon Web Services_Amazon S3 - Fatal编程技术网

Php Amazon s3 |格式错误的DXML状态代码:400

Php Amazon s3 |格式错误的DXML状态代码:400,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,在使用aws sdk for php的putObject()函数时,我收到以下错误: PHP Fatal error: Uncaught Aws\S3\Exception\MalformedXMLException: AWS Error Code: MalformedXML, Status Code: 400, AWS Request ID: 7E36EB414B2A9436, AWS Error Type: client, AWS Error Message: The XML you p

在使用aws sdk for php的putObject()函数时,我收到以下错误:

PHP Fatal error:  Uncaught Aws\S3\Exception\MalformedXMLException: AWS Error Code: MalformedXML, 
Status Code: 400, AWS Request ID: 7E36EB414B2A9436, AWS Error Type: client, 
AWS Error Message: The XML you provided was not well-formed or did not validate against our published schema, 
User-Agent: aws-sdk-php2/2.5.4 Guzzle/3.8.1 curl/7.26.0 PHP/5.5.19-1~dotdeb.1
  thrown in /sites/sitename/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/NamespaceExceptionFactory.php on line 91
即使我收到了错误,进程仍会继续成功运行,文件也会移动到s3。我知道这很可能与我在函数中包含的参数有关,但我不确定还有什么需要,因为只显示了所需的“bucket”和“key”参数。我的配置如下:

$config = array();
$config['Bucket'] = IMAGE_BUCKET;
$config['Key'] = $imageName;
$config['SourceFile'] = $sourceImageDir;
$config['ACL'] = 'public-read';
$config['ContentLength'] = filesize($sourceImageDir);

$response = $s3->putObject($config);

如果我知道服务需要什么格式,我肯定我可以在请求转换成xml字符串后获取我发送的请求,并将其与xml字符串进行比较,但我似乎找不到它。如果存在的话。我想是有这样的事情吗?

多亏了迈克尔的评论,我才能够进一步追踪这个问题。事实证明,问题实际上来自对deleteObjects()的调用。这些命令是在cli上的shell脚本中执行的,结果是在最后一次调用putObject()之前有另一次调用。它试图将空数组发送到s3服务…这显然会返回给定的格式错误的DXML状态代码。

这似乎特别奇怪,因为REST层的
PUT
(对象)不涉及向s3发送任何XML。