【问题标题】:AWS PHP SDK getting class not found fatal errorAWS PHP SDK获取类未找到致命错误
【发布时间】:2016-04-05 04:28:18
【问题描述】:

我正在尝试从我的 SQS 读取消息,但我无法做到这一点,因为我在安装 PHP SDK 时遇到了问题。

我按照说明通过 composer 安装了。

我的测试代码是:

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 上输出文本。

【问题讨论】:

    标签: php amazon-web-services aws-sdk aws-php-sdk


    【解决方案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);
    

    【讨论】:

    • factory 方法只是使用提供的数组调用类的构造函数。您问题中的代码与此答案中的代码之间的区别在于是否存在导入语句:use Aws\Sqs\SqsClient;
    【解决方案2】:

    您尝试实例化的类是 namspaced。请记住在通过短名称引用类之前包含 use Aws\Sqs\SqsClient; 语句。

    【讨论】:

      【解决方案3】:

      有点相关但不完全是这个问题。我有一个找不到 Aws\Sns\MessageValidator (& Message) 的类,经过一番努力后发现最新的 PHP SDK v3.17.3 在 \Sns - https://github.com/aws/aws-sdk-php/tree/3.17.3/src/Sns 下没有它们。我只是回滚到早期版本 3x 并更正了导入路径以获取我们需要的类。在这里发帖认为它可能对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 2013-03-20
        • 2011-09-08
        • 1970-01-01
        相关资源
        最近更新 更多