参数1传递给Aws \ Multipart \ AbstractUploader :: Aws \ Multipart \ {closure}()必须是Exception的一个实例,给出Error的实例

时间:2016-07-29 06:59:54

标签: php amazon-web-services amazon-s3 yii2-advanced-app

我有一个用于上传和下载图片的yii2高级项目。我已经使用 ctala / yii2-aws-s3 上传/下载到AWS s3帐户。它在我的本地机器上工作正常,但它在aws live服务器中不起作用。将图像上传到s3时,我收到以下错误,

参数1传递给Aws \ Multipart \ AbstractUploader :: Aws \ Multipart {closure}()必须是Exception的实例,给出Error的实例,在/ var / www / html / Exc / vendor /中调用第203行的guzzlehttp / promises / src / Promise.php

$imageName = '0fyuh_vidv7notmdnb-fzn4oqlylpqho_italy-hd-wallpapers-22.jpg';
$fileName = Yii::$app->params['uploadedImagePath'].$imageName;  
$response = Yii::$app->get('s3bucket')->multipartUpload(
                    "uploaded_images/$imageName",
                    $fileName,
                    $concurrency,
                    $minPartSize
                );

这个问题有什么解决方案吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

我看到没有人回答这个问题。经过5个小时的调试,我找到了解决这个问题的方法。这里缺少一些php的扩展。我有问题从php7 debian jessie迁移到CentOS,因为CentOS没有预装一些扩展我有这个错误。

我的问题是我缺少php7的simplexml。这真的很难调试,因为aws-swk期望Exception的实例,但是guzzle正在传递Error对象的实例。

您应该做的是转到Aws\Multipare\AbstractUploadManager课程到第132行并将otherwise(function (\Exception $e)更改为 otherwise(function ($e)你应该看到真正的错误。