[英]Argument 2 passed to Aws\AwsClient::getCommand() must be of the type array, string given
我從這個頁面跟着安裝。
這是SDK的第3版。 這里的基本用法。
<?php
require 'vendor/autoload.php';
use Aws\CloudFront\CloudFrontClient;
$cdn = new CloudFrontClient(
['version' => 'latest',
'region' => 'us-east-1']
);
// Create a new invalidation.
$response = $cdn->create_invalidation('EPYAAAAAAPAA', 'aws-clear-cache' . time(), "/*");
根據這篇文章 。
可捕獲的致命錯誤:傳遞給Aws \\ AwsClient :: getCommand()的參數2必須是類型數組,給定的字符串,在/ Users / jason / www / aws / vendor / aws / aws-sdk-php / src / AwsClient中調用第167行的.php,第211行的/Users/jason/www/aws/vendor/aws/aws-sdk-php/src/AwsClient.php中的定義
此處更新和工作解決方案:
$config = array(
'region' => 'us-east-1',
'version' => '2015-07-27',
'credentials' => array(
'key' => env('AMAZON_KEY_CLOUDFRONT'),
'secret' => env('AMAZON_SECRET_CLOUDFRONT')
)
);
$cdn = new CloudFrontClient($config);
$cache = array('DistributionId' => env('CLOUDFRONT'),
'InvalidationBatch' => array(
'CallerReference' => 'none',
'Paths' => array(
'Quantity' => 1,
'Items' => array( 'test' => '/*')
)
)
);
// Create a new invalidation.
$response = $cdn->createInvalidation($cache);
var_dump($response);
我看了一下這里發生了什么,顯然你正在使用無效的方法簽名。
首先,AWS PHP SDK使用稱為“服務描述模型”的東西來獲取您指定版本的API接口。 在這種情況下,這意味着他們使用一些元編程技術來提供看起來像普通PHP函數調用的接口,但這些函數在SDK中沒有硬編碼。 它們並不存在於我們通常認為的意義上,至少不像普通的PHP函數那樣存在。 一些PHP魔法正在下面發生。
當你調用$cdn->create_invalidation()
它會在繼承自Aws\\AwsClient
Aws\\CloudFront\\CloudFrontClient
實例上Aws\\AwsClient
。 這些類(也沒有任何祖先)實際上都沒有::create_invalidation()
方法實現。 但是AwsClient
確實實現了PHP魔術方法::__call()
。 您可以在PHP文檔中查看有關此魔術方法的完整信息,但基本上當您調用對象上不存在的任何方法時,如果其類實現::__call()
,則將::__call()
代替。
所以現在我們在::__call()
(你可以看到這里的代碼),這個方法最終調用::getCommand()
。 在::getCommand()
內部,您可以看到方法簽名需要傳入一個數組(第一個參數$name
,是唯一的其他方法參數,並且由於以下方式,它將具有值"create_invalidation"
::__call()
已在上面實現)。 這就是第一個問題出現的地方:你需要傳入一個數組,而不是單個字符串或時間戳或其他任何東西。
但還有另外一件事; 要調用的實際方法不是create_invalidation
,而是createInvalidation
。 有完整的API文檔的SDK 這里 -只要確保你選擇正確的版本。 對於我正在查看的版本,您可以在此處找到用於創建失效的API文檔和方法簽名。
您可以在項目的GitHub自述文件中找到有關AWS PHP SDK的大量信息,包括指向用戶指南,API文檔等的鏈接。 祝你好運,快樂編碼:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.