Возможно ли установить и использовать ZF (+ его консольный инструмент) без доступа к include_path direcotory? Я попытался добавить … Zend / library directcotry в 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, и инструмент перестает метать ошибку «error include_path». На самом деле он прервал печать любого выхода. При выполнении команды zf create project test
ничего не делает. ~ / .zf не создана.
Если вы не можете скопировать библиотеку 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
на коробке. там есть конфиги, и есть параметр cor include path.
Помимо этого вы могли бы также рекламировать что-то вроде того, что у вас было в php -r ...
для скрипта оболочки, выполняемого вами напрямую, хотя это не было бы рекомендуемым способом.