【发布时间】:2021-10-29 12:23:35
【问题描述】:
我正在使用 AWS PHP 开发工具包。通常,我会在我的程序中做这样的事情:
require '/aws_sdk/aws-autoloader.php';
use Aws\Rds\RdsClient;
use Aws\Ec2\Ec2Client;
use Aws\Exception\AwsException;
try {
$ec2Client = new Aws\Ec2\Ec2Client([
'version' => 'latest',
'region' => 'us-west-1,
'profile' => 'default'
]);
} catch (Ec2Exception $ex) {
pretty_echo($ex->getMessage());
}
我想做的是编写一个使用 Aws\Rds\RdsClient、Aws\Ec2\Ec2Client 和 Aws\Exception\AwsException 的类。
以下是我的命名空间(esd_aws_sdk.php):
<?php
namespace Esd\AwsSdk;
require PHP_BASE.'/aws_sdk/aws-autoloader.php';
use Aws\Rds\RdsClient;
use Aws\Ec2\Ec2Client;
use Aws\Exception\AwsException;
class Clients
{
public $region;
public $profile;
public $Ec2Client = FALSE;
public $RdsClient = FALSE;
function __construct($region, $profile) {
$this->region = $region;
$this->profile = $profile;
$this->createAwsClients();
}
private function createAwsClients()
{
{
try {
$this->Ec2Client = new Aws\Ec2\Ec2Client([
'version' => 'latest',
'region' => $this->region,
'profile' => $this->profile
]);
} catch (Ec2Exception $ex) {
echo($ex->getMessage());
}
}
try {
$this->RdsClient = new Aws\Rds\RdsClient([
'version' => 'latest',
'region' => $this->region,
'profile' => $this->profile
]);
} catch (RdsException $ex) {
echo($ex->getMessage());
}
}
}
以及测试程序:test.php
<?php
SetPaths();
include_once 'aws_sdk.php';
use Esd\AwsSdk;
$AwsClients = new Esd\AwsSdk\Clients('us-east-1', 'airtable');
function SetPaths()
{
$ds = DIRECTORY_SEPARATOR;
$dir = explode($ds, __DIR__);
$dir_last_key = count($dir) - 1;
unset($dir[$dir_last_key]);
$app_root = implode($ds, $dir);
define('APP_CODE',$app_root.$ds.'code'.$ds);
define('APP_INCLUDE',$app_root.$ds.'include'.$ds);
define('APP_DATA',$app_root.$ds.'data'.$ds);
define('APP_LOG',$app_root.$ds.'log'.$ds);
unset($dir[$dir_last_key - ($depth + 1)]);
define('SECTION_COMMON',implode($ds, $dir).$ds.'common'.$ds);
unset($dir[$dir_last_key - ($depth +2)]);
define('PHP_BASE',implode($ds, $dir).$ds);
}
但是当我运行 test.php 时,我得到以下信息:
Fatal error: Uncaught Error: Class 'Esd\AwsSdk\Aws\Ec2\Ec2Client' not found in /Users/esd-mac/php/aws/aws/code/aws_sdk.php:26
Stack trace: #0 /Users/esd-mac/php/aws/aws/code/aws_sdk.php(19): Esd\AwsSdk\Clients->createAwsClients() #1 /Users/esd-mac/php/aws/aws/code/test.php(7): Esd\AwsSdk\Clients->__construct('us-east-1', 'airtable') #2 {main} thrown in /Users/esd-mac/php/aws/aws/code/aws_sdk.php on line 26
有什么想法吗?
【问题讨论】:
标签: php aws-sdk aws-php-sdk