Zend инструмент включает путь - PullRequest
2 голосов
/ 18 января 2010

Можно ли установить и использовать 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 ]

4 голосов
/ 23 января 2010

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

1 голос
/ 19 января 2010

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

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

...