Composer安装的Amazon AWS SES 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(

我不能使用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(
                    '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类(但不太确定)。