Zend инструмент включает путь

Можно ли установить и использовать ZF (+ его консольный инструмент) без доступа к директории include_path? Я попытался добавить директиву Zend/library в include_path, но безуспешно.

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

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 есть структура нашей компании, поэтому я не могу (даже если бы мог, не должен) копировать туда библиотеку ZF.

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

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

2 ответа

Решение

Если вы не можете скопировать библиотеку 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:)

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

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

Другие вопросы по тегам