【问题标题】:How to install the AWS SDK in Yii如何在 Yii 中安装 AWS 开发工具包
【发布时间】:2012-11-22 15:16:59
【问题描述】:

我想在我的 Yii 项目中使用 Amazon AWS SDK for PHP,但是我得到了各种包含错误(例如 include(CFCredentials.php): failed to open stream: No such file or directory )。

我认为这可能与 Yii 的类名必须匹配文件名的假设有关...

我们能做什么??

【问题讨论】:

    标签: php amazon-web-services yii include autoload


    【解决方案1】:

    我做到了:

    spl_autoload_unregister(array('YiiBase', 'autoload'));
    require_once PATH_TO_AWS_SDK . 'sdk.class.php';
    // I write down in PATH_TO_AWS_SDK.'config.inc.php' my CFCredentials
    spl_autoload_register(array('YiiBase', 'autoload'));
    
    $amazon_opts = array(
        'curlopts' => array(
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_FORBID_REUSE   => false,
        ),
    );
    $amazon = new AmazonSES();
    $response = $amazon->get_send_quota($amazon_opts);
    

    【讨论】:

    • 而不是禁用 Yii 的自动加载器然后添加它(首先有亚马逊),可能会导致亚马逊的自动加载器被预先设置,如这篇博文中提到的 blog.lency.me/2012/06/17/…
    • 嗨@sergey,我仍然收到错误'致命错误:在/home/xxx/workspace/project/protected/components/amazon/config.inc.php中找不到类'CFCredentials' 2',请帮帮我
    【解决方案2】:

    效果很好:

    // Include the SDK
    
    Yii::import('application.vendors.aws.*');
    spl_autoload_unregister(array('YiiBase', 'autoload'));
    require_once 'sdk.class.php';
    spl_autoload_register(array('YiiBase', 'autoload'));
    
    // Instantiate the AmazonEC2 class
    $ec2 = new AmazonEC2();
    

    【讨论】:

      【解决方案3】:

      如果有人偶然发现这个问题,我发现如果有人直接使用 PHAR 文件(我知道这是一个糟糕的决定)并通过 require_once 导入,那么在你的 SDK 之后你不能调用 spl_autoload_register 来重新添加 YiiBase 自动加载通话完成。

      至少这是我们使用 StsClient 调用具有 IAM 角色的承担角色时的情况。

      【讨论】:

        【解决方案4】:

        这个更简单,你可以使用 Yii S3 Upload 扩展。

        http://www.yiiframework.com/extension/s3upload/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-29
          • 1970-01-01
          • 2012-02-08
          • 2018-07-08
          • 2019-06-26
          • 1970-01-01
          • 2021-10-29
          • 2014-12-16
          相关资源
          最近更新 更多