0

我需要将 HP Object Storage 插件集成到我的 Yii 项目中。我已经在http://hpcloud.github.com/HPCloud-PHP/下载了 Hp 对象存储插件,并按照这里的教程 https://blog.hpcloud.com/working-object-storage-php

这是我的项目的结构

            /..
            /YiiBase.php
            /index.php
            /protected/..
            /protected/hpcloud/..
            /protected/hpcloud/Bootstrap.php

在文件 /protected/config/main.php 中,我已经包含了 Bootstrap:

           spl_autoload_unregister(array('YiiBase','autoload')); //temporary skip yii autoload

            $basePath = dirname(__FILE__) . DIRECTORY_SEPARATOR . '..';
            require_once $basePath . DIRECTORY_SEPARATOR . 'hpcloud' . DIRECTORY_SEPARATOR . 'Bootstrap.php';

            use \HPCloud\Bootstrap;
            Bootstrap::useAutoloader();
            Bootstrap::useStreamWrappers();

            // Provide credentials
            $settings = array(
                'account' => YOUR_ACCOUNT_NUMBER,
                'secret' => YOUR_SECRET_KEY,
                'tenantid' => YOUR_TENANT_ID,
                'endpoint' => IDENTITY_SERVICES_URL,
            );
            Bootstrap::setConfiguration($settings);

            spl_autoload_register(array('YiiBase','autoload'));

但它抛出了异常

            Fatal error: Class 'HPCloud\Storage\ObjectStorage\StreamWrapper' not found in D:\wamp\www\myproject\protected\hpcloud\Bootstrap.php on line 182

我打开 Bootstrap.php 对其进行故障排除

            public static function useStreamWrappers() {
                $swift = stream_wrapper_register( // error in line 182
                  \HPCloud\Storage\ObjectStorage\StreamWrapper::DEFAULT_SCHEME,
                  '\HPCloud\Storage\ObjectStorage\StreamWrapper'
                );

                $swiftfs = stream_wrapper_register(
                  \HPCloud\Storage\ObjectStorage\StreamWrapperFS::DEFAULT_SCHEME,
                  '\HPCloud\Storage\ObjectStorage\StreamWrapperFS'
                );

                return ($swift && $swiftfs);
            }

命名空间和路径都是正确的。我找不到错误的原因。如果我按照以下结构将插件单独保留一个简单的文件 index.php (在 Yii 项目文件夹之外),它工作正常。

            \..
            \index.php
            \hpcloud\Bootstrap.php

当我将插件放入 Yii 项目时,错误刚刚发生,我认为命名空间有问题。

任何帮助表示赞赏。谢谢

4

1 回答 1

0

我现在发现了我的问题。这都是关于区分大小写的。命名空间是“HPCloud”,而插件目录名称是“hpcloud”。

于 2013-04-04T13:40:40.540 回答