我需要将 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 项目时,错误刚刚发生,我认为命名空间有问题。
任何帮助表示赞赏。谢谢