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 ...
к сценарию оболочки, который вы выполняете напрямую, хотя это не рекомендуемый способ.