如何将 AWS 开发工具包加载到 CakePHP 中


How to load AWS SDK into 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 开发工具包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;
    }
}

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

require 'vendor/autoload.php';

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