2010-01-18 4 views
2

Возможно ли установить и использовать ZF (+ его консольный инструмент) без доступа к include_path direcotory? Я попытался добавить ... Zend/library directcotry в include_path, но без успеха.Инструмент Zend включает путь

Я сделал это так:

php -r 'set_include_path(get_include_path() . PATH_SEPARATOR . "/var/www/.../Zend/library")'; 

После var_dump ИНГ результат функции выше вернулся старый include_path, который должен означать успех. Но следующий вызов get_include_path() вернул путь старый.

Я также попытался установить переменное окружение:

ZF_INCLUDE_PATH_PREPEND="/var/www/.../Zend/library" 

Там есть наша компания рамка в старом каталоге include_path, так что я не могу (даже если бы я мог я should't) скопировать там ZF библиотека.

Я думаю, что правильная структура не должна полагаться на любые глобальные настройки PHP, как include_path. Я думаю, что должно быть возможно установить путь включения где-нибудь в внутренний файл конфигурации ZF.

редактировать:
Я добавил set_include_path('/var/www/.../Zend/library') в zf.php файл и инструмент перестал бросать ошибку «неправильно include_path». На самом деле он прервал печать любого выхода. При выполнении команды zf create project test он ничего не делает. ~/.zf не создана.

ответ

4

Если вы не можете скопировать библиотеку zf в какой-либо «глобальный» путь включения, например. /usr/share/php/, вы можете скопировать его там, где находится ваш проект, и запустить инструмент zf. Структура папок, как:

/var/www/zf_tool 
       `/bin/ 
         `zf.sh 
         `zf.php 
       `/library 
         `/Zend 

Скопируйте папку Zend под библиотеку, а zf.sh и zf.php скрипты под bin и установить их, чтобы быть исполняемым chmod a+x zf.sh zf.php, если они уже не. Далее, если вы запустите /var/www/project/bin/zf.sh, он будет искать zf-файлы в include_path, но если его там нет, он пойдет вверх по одной папке и зайдет в папку library. Только если библиотека zf не будет там найдена, она умрет с ошибкой. В конце концов, создание нового проекта zf прост как:

$ pwd 
/var/www/zf_tool/bin 
$ ./zf.sh create project /var/www/test_project 

Всё. HTH :)

+0

Я просто попробовал ваше решение и, похоже, не работает. Скрипт умирает с ошибкой включения пути. –

+0

ОБНОВЛЕНИЕ: Я забыл каталог Zend. После создания. Он не умирает с ошибкой ... он просто умирает и НЕ НИЧЕГО :-( –

1

Использование функции set/get include_path только собирается установить его для жизни «запроса», чтобы он возвращался в нормальное состояние, как только завершится окончание команды/веб-запроса. Что касается установки пути включения для вашей локальной копии, вы можете сделать это в переменной среды, как вы пробовали, или в вашей папке ~/.zf на коробке. там есть конфиги, и есть параметр cor include path.

Помимо этого вы можете также рекламировать что-то вроде того, что у вас было в php -r ..., к скрипту оболочки, выполняемому вами напрямую, хотя это не было бы рекомендуемым способом.

+0

Спасибо за ответ, нет папки ~/.zf. Zend_tool всегда выходил с ошибкой («Чтобы запустить команду zf, вам нужно убедиться, что Zend Framework находится внутри вашего include_path».) Итак, я думаю, что он не смог ее создать. Я добавил set_include_path() непосредственно в файл zf.php, но он не работает. (см. вопрос редактирование) –