【问题标题】:How to load AWS SDK into CakePHP?如何将 AWS SDK 加载到 CakePHP 中?
【发布时间】:2014-05-11 18:33:58
【问题描述】:

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

}

【问题讨论】:

  • 谢谢!这就是我要找的:)
  • 我面临同样的问题。上述解决方案对我不起作用..我使用的是相同的文件夹结构。并关注github.com/Ali1/cakephp-amazon-aws-sdk你能告诉我是对还是错?
  • 这是版本问题.. 我正在使用 SDK V3
  • 不适用于 SDK V2,8。你能帮我么。这是问题stackoverflow.com/questions/32052772/…
  • @urfusion 我认为您的 aws sdk 存储在与我不同的位置。您可能需要检查您的路径并相应地调整 ini_setrequire 路径。

标签: php cakephp amazon-web-services sdk aws-sdk


【解决方案1】:

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

require 'vendor/autoload.php';

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

【讨论】:

    猜你喜欢
    • 2020-12-03
    • 2016-01-27
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多