2016-07-29 15 views
1

Ich habe ein yii2 erweitertes Projekt zum Hochladen und Herunterladen von Bildern. Und ich habe ctala/yii2-aws-s3 zum Hochladen/Herunterladen auf AWS s3 account verwendet. Es funktioniert gut in meinem lokalen Computer, aber es funktioniert nicht in aws Live-Server. Ich erhalte den folgenden Fehler beim Hochladen eines Bildes auf s3,Argument 1 an Aws Multipart AbstractUploader :: Aws Multipart {closure}() muss eine Instanz von Exception sein, Instanz des Fehlers gegeben

Argument 1, das an Aws \ Multipart \ AbstractUploader :: Aws \ Multipart {closure}() übergeben wird, muss eine Instanz von Exception, Instanz von Error, aufgerufen werden /var/www/html/Exc/vendor/guzzlehttp/promises/src/Promise.php on line 203

$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 
       ); 

gibt es eine Lösung für dieses Problem?

Vielen Dank im Voraus.

+0

HTTP-Anfragen, die gleichzeitig im AWS SDK for PHP gesendet werden, verwenden einen einzelnen Thread, in dem nicht blockierende Aufrufe verwendet werden, um eine oder mehrere HTTP-Anforderungen zu übertragen, während sie auf Statusänderungen reagieren (z. B. Versprechen erfüllen oder ablehnen). Check out this: https://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/promises.html –

+0

Ich habe diesen Punkt nicht bekommen. Kannst du das bitte ein bisschen mehr erklären? –

Antwort

1

Ich sehe niemand antwortete dies. Nach 5 Stunden Debugging fand ich eine Lösung für dieses Problem. Einige Erweiterungen für PHP fehlen hier. Ich hatte Probleme, hier von php7 debian jessie zu CentOS zu migrieren, da CentOS einige vorinstallierte Erweiterungen nicht hatte, hatte ich diesen Fehler.

Mein Problem war, dass ich Simplexml für PHP7 vermisste. Dies ist wirklich schwer zu debuggen, da aws-swk die Instanz von Exception erwartet, aber guzzle die Instanz des Error-Objekts weitergibt.

Was Sie tun sollten, ist zu Aws\Multipare\AbstractUploadManager Klasse gehen 132 an LINE und otherwise(function (\Exception $e) zu otherwise(function ($e) ändern, und es sollten Sie Ihren wirklichen Fehler zu sehen.