проблема клона Zend и Smarty сайта - PullRequest
1 голос
/ 15 января 2011

Я недавно создал сайт, используя zend и smarty.Сайт размещен на виртуальной машине с CentOS.Теперь я хочу создать похожий сайт, чтобы создать другой виртуальный хост, пользователя ftp и т. Д. На том же компьютере.

Я изменил INI-файл, содержащий пути: paths.base = / var / www / html/ new_pathpaths.data = / var / www / html / new_path / datapaths.templates = / var / www / html / new_path / templatespaths.cache = / var / www / html / new_path / data / tmp / cachepaths.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.php в строке 146

Предупреждение: 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

Неустранимая ошибка: класс 'DatabaseObject_Chat' не найден в /var/www/html/new_path/include/Controllers/ChatController.phpв строке 8).

Других путей нигде не определено.Кеширование отключено.Это происходит на разных компьютерах, в браузерах и т. Д., Поэтому не является локальной проблемой (остаточная стоимость какого-либо типа).

Для каких-либо подробностей просто спросите ... Я застрял.

1 Ответ

0 голосов
/ 11 декабря 2011

Zend_Loader просматривает каталоги включения, определенные в вашем public / index.php. include path должен быть правильно установлен, чтобы содержать как старые каталоги, так и новые. Обратите внимание на соответствующий порядок, указанный вашим путём включения.

Код в public / index.php должен выглядеть примерно так, при условии использования ZF1:

<?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);
...