php - 如何将 AWS SDK 加载到 CakePHP 中?

标签 php cakephp amazon-web-services sdk 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;
    }

}

在我应用的 Controller 中,我使用 $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

文件夹 app/Plugin/S3/Vendor/aws 中的 AWS SDK

我正在加载 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 不应触及自动加载机制。

关于php - 如何将 AWS SDK 加载到 CakePHP 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22778202/

相关文章:

amazon-web-services - 如何在 CentOS 7 上使用 yum 安装最新的 awscli?

c# - 使用 AWS CDK 创建用于构建 Docker 镜像的 CodeBuild 项目

php - 如何在 phpMyAdmin 中为每个服务器创建不同的主题?

mysql - 为 mysql 上的 cakephp 定义种子脚本并给出 1 的示例

php - 我们如何将看起来像 cakephp/pages/1 的 cakephp url 转换为 cakephp/about-us?

javascript - 如何在 Cakephp 中一次加载所有的 css 和 js

mysql - 将 Scala 和 Play-Slick 连接到 AWS MySQL

php - FILTER_VALIDATE_EMAIL 的一致性如何?

php - 由于解码不当,Wordpress 搜索在特殊字符上失败

php - HTML 电子邮件无法正确显示基于 Godaddy Web 的邮件