Composer安装的Amazon AWS SES PHP类不可用
我不能使用AWS SES PHP类,尽管我已经通过composer安装了AWS PHP2SDK 根级别的PHP是:Composer安装的Amazon AWS SES PHP类不可用,php,symfony,amazon-web-services,composer-php,Php,Symfony,Amazon Web Services,Composer Php,我不能使用AWS SES PHP类,尽管我已经通过composer安装了AWS PHP2SDK 根级别的PHP是: require __DIR__ . '/vendor/autoload.php'; //esto añade lo que gestiona composer use Aws\Common\Aws; use Aws\Ses\SesClient; $client = SesClient::factory( array(
require __DIR__ . '/vendor/autoload.php'; //esto añade lo que gestiona composer
use Aws\Common\Aws;
use Aws\Ses\SesClient;
$client = SesClient::factory(
array(
'key' => $userid,
'secret' => $secret,
'region' => 'us-east-1' // SES has only us-east-1 endpoint, but can be used from global
)
);
浏览器执行返回以下内容:
致命错误:在第41行的/homepages/13/d357210024/htdocs/api/sendses.php中找不到类“Aws\Common\Aws\Ses\SesClient”
根目录下的composer.json如下所示:
{
"require": {
"aws/aws-sdk-php": "2.*"
}
}
/vendor文件夹包含aws、composer、guzzle和symfony软件包,以及仅包含以下代码的autoload.php:
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer' . '/autoload_real.php';
return ComposerAutoloaderInita6b8287c70832f4f8a65e83c0ad07b6d::getLoader();
问题比那简单。你有:
use Aws\Common\Aws;
use Aws\Ses\SesClient;
有了这个,您第二次重新定义了Aws
名称空间,以表示不同的含义。如果您实际上没有使用Aws\Common\Aws
,那么就不要使用它
require __DIR__ . '/vendor/autoload.php';
use Aws\Ses\SesClient;
$client = SesClient::factory(array(
'key' => $userid,
'secret' => $secret,
'region' => 'us-east-1',
));
问题比那简单。你有:
use Aws\Common\Aws;
use Aws\Ses\SesClient;
有了这个,您第二次重新定义了Aws
名称空间,以表示不同的含义。如果您实际上没有使用Aws\Common\Aws
,那么就不要使用它
require __DIR__ . '/vendor/autoload.php';
use Aws\Ses\SesClient;
$client = SesClient::factory(array(
'key' => $userid,
'secret' => $secret,
'region' => 'us-east-1',
));
可能由于供应商/composer/autoload_classmap.php为空,这些类不可用。。。不,您应该查看autoload_namespace.php
文件,并看到“Aws”有一个条目。您的示例适用于我。也许检查一下文件的权限没有被屏蔽,所以它们不能被PHP加载?谢谢Sven,这是我的代码:://autoload_namespaces.PHP@由Composer$vendorDir=dirname(dirname(FILE))生成的$baseDir=dirname($vendorDir);返回数组('Symfony\\Component\\EventDispatcher\\'=>array($vendorDir./Symfony/event dispatcher'),'Guzzle\\Tests'=>array($vendorDir./Guzzle/Guzzle/src'),'Aws'=>array($vendorDir./Aws/Aws-sdk-php/src');抱歉,四个空格没有在答案上显示代码格式…可能由于供应商/composer/autoload_classmap.php为空,这些类不可用。。。不,您应该查看autoload_namespace.php
文件,并看到“Aws”有一个条目。您的示例适用于我。也许检查一下文件的权限没有被屏蔽,所以它们不能被PHP加载?谢谢Sven,这是我的代码:://autoload_namespaces.PHP@由Composer$vendorDir=dirname(dirname(FILE))生成的$baseDir=dirname($vendorDir);返回数组('Symfony\\Component\\EventDispatcher\\'=>array($vendorDir./Symfony/event dispatcher'),'Guzzle\\Tests'=>array($vendorDir./Guzzle/Guzzle/src'),'Aws'=>array($vendorDir./Aws/Aws-sdk-php/src');抱歉,四个空格没有在答案上显示代码格式…这就是为什么您的错误消息会抱怨Aws\Common\Aws\Ses\SesClient
。如果需要这行Aws\Common\Aws,我们该怎么办?您可以这样为类设置别名:使用Aws\Common\Aws作为AwsClient
并将其作为AwsClient引用,但是您还应该能够简单地交换use语句的顺序,以便最后加载Aws类(尽管不太确定该类)。这就是为什么您的错误消息会抱怨Aws\Common\Aws\Ses\SesClient
。如果需要这一行Aws\Common\Aws,我们该怎么办?您可以这样设置类的别名:使用Aws\Common\Aws作为AwsClient
并将其引用为AwsClient,但您也应该能够简单地交换use语句的顺序,以便最后加载Aws类(但不太确定)。