AWS 命名空间未加载 - Codeigniter 4.6、PHP 8.3

问题描述 投票:0回答:1

我正在尝试连接到 AWS Connect 实例以读取案例和关联的联系人记录。我首先使用一个简单的控制器只是为了正确设置连接和 API 调用。我正在使用 CodeIgniter 4.6,在使用 PHP 8.3 的 Wampserver 上运行。

看起来基本设置是正确的,如果我只运行简单的默认控制器,我会受到 CodeIgniter 的欢迎。我还使用 Composer 安装了 AWS PHP SDK-V3。

以下是我必须设置 AWS 命名空间并调用 SDK 中适当的 AWS API 方法的代码:

require '../vendor/autoload.php';

use Aws\ConnectCases\ConnectCasesClient;
use Aws\Exception\AwsException;
use Aws\Common\Credentials\Credentials;

class Home extends BaseController
{
    public function index(): string
    {   
        echo ('does it exist?: <br />'); 
        var_dump(class_exists('AWS\ConnectCases\ConnectCasesClient'));
        exit;
        $ccClient = new ConnectCasesClient([
            'region'  => 'us-east-1',
            'version' => 'latest',
            'key'     => 'xxxxxxxxx',
            'secret'  => 'xxxxxxxxx',
            'token'   => 'xxxxxxxxx'
        ]);

class_exists
报告 False,这表明 AWS 命名空间未正确设置或找到。如果删除
exit;
,我会收到 Http 500 服务器错误。我确信这是一些愚蠢的配置错误,有人能指出我正确的方向吗?

附加信息: 作曲家 json:

{
    "require": {
        "codeigniter4/framework": "^4.6",
        "aws/aws-sdk-php": "^3.337"
    }
}

这是供应商文件夹的目录列表:

enter image description here

php amazon-web-services codeigniter-4
1个回答
0
投票

有多个问题需要解决。

  1. 在 var_dump 中,将 AWS 更改为 Aws
  2. 数组中未使用凭证密钥。请参阅下面更新的代码
  3. CodeIgniter 4 默认包含自动加载功能,只需通过vendor/autoload.php 确认自动加载器是否正确设置即可

这是更新后的脚本:

use Aws\ConnectCases\ConnectCasesClient;
use Aws\Exception\AwsException;

class Home extends BaseController
{
    public function index(): string
    {   
        // Verify class existence with correct namespace casing
        var_dump(class_exists('Aws\ConnectCases\ConnectCasesClient'));

        $ccClient = new ConnectCasesClient([
            'region'      => 'us-east-1',
            'version'     => 'latest',
            'credentials' => [
                'key'    => 'xxxxxxxxx',
                'secret' => 'xxxxxxxxx',
                // 'token' => '...' // Include only if using session tokens
            ]
        ]);

        // Rest of your logic
    }
}

还运行以下 Composer 命令来重新生成自动加载映射:

composer dump-autoload 
© www.soinside.com 2019 - 2024. All rights reserved.