zend和smarty网站克隆问题

时间:2011-01-15 15:39:18

标签: php zend-framework smarty

我前段时间使用zend和smarty创建了一个网站。该站点托管在具有centOS的虚拟机上。现在我想创建一个类似的站点,所以我在同一台机器上爬上了另一个虚拟主机,ftp用户等。

我修改了包含路径的ini文件: paths.base = / var / www / html / new_path
paths.data = / var / www / html / new_path / data
paths.templates = / var / www / html / new_path / templates
paths.cache = / var / www / html / new_path / data / tmp / cache
paths.public = / var / www / html / new_path / public_html

当我尝试访问zend / loader.php(我尝试加载数据库对象)时,问题就在于它使用旧路径中的加载器(/ var / www / html / oldpath / include / zend / loader.php)所以很自然地我无法访问我为新网站创建的任何新对象 ( 警告:include_once(DatabaseObject / New.php)[function.include-once]:无法打开流:/ var / www / html / old_path / include / Zend / Loader中没有这样的文件或目录第146行的.php

警告:include_once()[function.include]:无法打开'DatabaseObject / New.php'以包含(include_path ='。:/ var / www / html / old_path / include:/ usr / share / pear /')在/var/www/html/old_path/include/Zend/Loader.php第146行

致命错误:第8行的/var/www/html/new_path/include/Controllers/ChatController.php中找不到“DatabaseObject_Chat”类 )。

在任何地方都没有定义其他路径。 缓存已禁用。 它出现在不同的计算机,浏览器等上,因此不是局部问题(某种类型的残值)。

任何细节都要问......我被困住了。

1 个答案:

答案 0 :(得分:0)

Zend_Loader查看public / index.php中定义的include目录。必须正确设置include path以包含旧目录和新目录。请注意包含路径指定的相应顺序。

假设使用ZF1,public / index.php中的代码应类似于以下内容:

<?php
...
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../../project_name/path_for_inclusion'),
    get_include_path(),
))); 
...

也可以在.htaccess中调整包含路径:

php_value include_path "/var/www/path:/var/www/second_path:/var/www/third"

或者您可以在没有特定于ZF的代码的情况下实现效果:

set_include_path(get_include_path() . PATH_SEPARATOR . $path_to_add);