如何更改Zend Framework的include目录

时间:2009-03-30 06:14:31

标签: zend-framework

我收到以下错误消息:

Warning: include_once(Zend\Db.php) [function.include-once]: 
failed to open stream: No such file or directory in 
C:\EasyPHP3\www\VPZ\Lib\Zend_1.7.7\Loader.php on line 83    

Warning: include_once() [function.include]: 
Failed opening 'Zend\Db.php' for inclusion (include_path='VPZ/') in 
C:\EasyPHP3\www\VPZ\Lib\Zend_1.7.7\Loader.php on line 83

Warning: require_once(Zend/Exception.php) 
[function.require-once]: failed to open stream: 
No such file or directory in 
C:\EasyPHP3\www\VPZ\Lib\Zend_1.7.7\Loader.php on line 87

Fatal error: require_once() [function.require]: 
Failed opening required 'Zend/Exception.php' (include_path='VPZ/') in 
C:\EasyPHP3\www\VPZ\Lib\Zend_1.7.7\Loader.php on line 87

我想要包含ZendXXX \ Db.php

如何改变

5 个答案:

答案 0 :(得分:8)

创建一个目录(比如'lib'),并将Zend目录放入其中。所以你的目录结构如下所示:

- application
- lib
  |- Zend
- wwwroot
  |- index.php

现在你应该在你的包含路径中添加lib。编辑index.php文件:

$includePath = array();
$includePath[] = '.';
$includePath[] = './../application';
$includePath[] = './../lib';
$includePath[] = get_include_path();
$includePath = implode(PATH_SEPARATOR,$includePath);
set_include_path($includePath);

现在您的包含路径中包含了lib。你可以包括所有Zend组件:

include 'Zend/Loader.php';
require_once 'Zend/Db.php';

最好的方法是首先包含Zend_Loader,然后使用它来加载类。这样做:

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Db');

您还可以注册自动加载课程。只需将此行添加到您的代码之后:

Zend_Loader::registerAutoLoad('Zend_Loader',true);

现在您不需要包含文件来调用类。只是实现你的课程:

$ session = new Zend_Session_Namespace('user');

不需要包含'Zend / Session / Namespace.php'。

答案 1 :(得分:0)

使用set_include_path()See PHP.net documentation

示例:

 set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/Zend');

答案 2 :(得分:0)

我通常将框架文件存储在“library”文件夹下:

  • 应用
  • 的public_html
    • 的Zend
    • 通用
    • 等...

然后在我的引导文件或前端控制器中,我将“library”文件夹添加到包含路径:

set_include_path(get_include_path() . PATH_SEPARATOR . '../library');

另见:

答案 3 :(得分:0)

其他建议说出这样做的原因,是因为这是一个不好的举动 - 换句话说,你做错了。

您可以创建一个子目录并将其命名为Zend xxx ,但是您必须将其添加到include_path,并在每次放置新命名的版本时更改它。

我猜错了,并说你没有一个好的方法来测试网站(所以你想把它锁定到特定版本的ZF),而且你没有使用修订版控制,所以如果您在服务器上直接更改实时运行代码时发现问题,那么您希望站点目录中的所有先前版本的代码都能够返回。

答案 4 :(得分:-1)

没有图书馆的项目从一个位置包括图书馆
项目C:\ xampp \ htdocs \ my \ application
库C:\ xampp \ Zend \ library

在index.php中进行更改

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR,  
           array(realpath(APPLICATION_PATH.'/../../../Zend/library'),get_include_path(),)));