Как загрузить AWS SDK в CakePHP?

Я создаю плагин S3 для своего приложения. В app/Plugin/S3/Controller/Component/S3Component.php у меня есть это:

<?php 

App::import('Vendor', 'aws/aws-autoloader');

use Aws\S3\S3Client;

class S3Component extends Component {

    public function loadS3 () {
        $s3 = S3Client::factory(array(
            'key' => '',
            'secret' => ''
        ));
        return $s3;
    }

}

В контроллере моего приложения я вызываю его с помощью $s3 = $this->S3->loadS3();

Выдает ошибку Error: Class 'Aws\S3\S3Client' not found

Я попытался добавить строку: App::uses('Vendor', 'aws/Aws/S3/S3Client'); в класс компонента и удалил use Aws\S3\S3Client;. Он показывает Error: Class 'S3Client' not found

AWS SDK находится в папке app/Plugin/S3/Vendor/aws

Я загружаю объект S3 со ссылкой на: http://docs.aws.amazon.com/aws-sdk-php/guide/latest/quick-start.html#factory-method

Решение:

Вот так теперь выглядит мой компонент с помощью @akirk.

<?php 

ini_set('include_path', ROOT . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'). PATH_SEPARATOR . ROOT .DS . 'app/Plugin/S3/Vendor/aws');

require ROOT . DS . 'app/Plugin/S3/Vendor/aws/aws-autoloader.php';

use Aws\S3\S3Client;

class S3Component extends Component {

    public function loadS3 () {
        $s3 = S3Client::factory(array(
            'key' => '',
            'secret' => ''
        ));
        return $s3;
    }

}

person resting    schedule 01.04.2014    source источник
comment
Спасибо! Это то, что я ищу :)   -  person decodingpanda    schedule 13.03.2015
comment
Я столкнулся с той же проблемой. приведенное выше решение не работает для меня. Я использую ту же структуру папок. и последующие github.com/Ali1/cakephp-amazon-aws-sdk могут подскажите правильно это или нет?   -  person urfusion    schedule 17.08.2015
comment
Это проблема версии. Я использую SDK V3   -  person urfusion    schedule 17.08.2015
comment
Не работает с SDK V2,8. не могли бы вы мне помочь. вот проблема /вопросы/32052772/   -  person urfusion    schedule 17.08.2015
comment
@urfusion Я думаю, что ваш aws sdk хранится не в моем месте. Возможно, вы захотите проверить свой путь и соответствующим образом настроить пути ini_set и require.   -  person resting    schedule 18.08.2015


Ответы (1)


Ясно, что автоимпорт не работает. Вы должны сделать это, как в учебнике, используйте require

require 'vendor/autoload.php';

поскольку механизм автозагрузки не должен затрагиваться CakePHP.

person akirk    schedule 01.04.2014