如何将AWS SDK加载到CakePHP中?

res*_*ing 6 php sdk cakephp amazon-web-services aws-sdk

我正在为我的应用创建一个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;
    }

}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序的控制器中,我称之为使用 $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;
    }

}
Run Code Online (Sandbox Code Playgroud)

aki*_*irk 1

显然自动导入不起作用。您应该按照教程中的方式进行操作,使用require

require 'vendor/autoload.php';
Run Code Online (Sandbox Code Playgroud)

因为 CakePHP 不应该触及自动加载机制。