2016-03-15 59 views
0

我正在嘗試從SQS中讀取消息,但無法安裝PHP SDK時遇到問題。AWS PHP SDK獲取類未找到致命錯誤

我遵循指示,並通過作曲家安裝。

我用於測試目的的代碼是:

require 'vendor/autoload.php'; 
$sqs_credentials = array(
     'region' => 'us-west-2', 
     'version' => 'latest', 
     'credentials' => array(
      'key' => '*****', 
      'secret' => '**********', 
     ) 
    ); 

    $sqs_client = new SqsClient($sqs_credentials); 

這隻會導致

Class 'SqsClient' not found in /var/www/html/sqs_test.php on line 10 

然後我直接下載的zip文件嘗試和使用

require 'aws/aws-autoloader.php'; 

這導致完全相同的錯誤。我究竟做錯了什麼?我很確定路徑是準確的,因爲我可以直接在Sqs/SqsClient.php上輸出文本。

回答

1

不過不知道爲什麼上面沒有工作,但如果有人試圖,這樣沒有問題:

require 'vendor/autoload.php'; 
use Aws\Sqs\SqsClient; 

$client = SqsClient::factory(array(
     'region' => 'us-west-2', 
     'version' => 'latest', 
     'credentials' => array(
      'key' => '********', 
      'secret' => '********', 
     ) 
    ) 
); 

$result = $client->receiveMessage(array(
    'QueueUrl' => $sqs_url 
)); 
print_r($result); 
+0

工廠方法只是用提供的數組調用類的構造函數。您問題中的代碼與此答案中的代碼之間的區別在於存在導入語句:'使用Aws \ Sqs \ SqsClient;' – giaour

1

你試圖實例化類namspaced。請記住在用短名稱引用類之前包含一個use Aws\Sqs\SqsClient;陳述。

0

有點相關,但不完全是這個問題。我有一個沒有找到Aws \ Sns \ MessageValidator的類(&消息),經過一番爭論發現最新的SDK v3.17.3 for PHP沒有在\ Sns - https://github.com/aws/aws-sdk-php/tree/3.17.3/src/Sns下。我只是回到早期的3x版本,並更正了導入路徑以獲得我們需要的類。在這裏發帖認爲這可能對某人有所幫助。

相關問題