Теперь я застрял с функцией file_exists ().Мой проект построен из репозиториев, один из них обозначен как DocRoot, другие доступны интерпретатору php через include_path.Но по умолчанию file_exists () не может посмотреть, какие файлы находятся где-то под include_path, поэтому мне нужно или как-то переопределить этот функционал с помощью оболочки или написать свой собственный, включить его в другие модули и заменить все совпадения этого функционала в дереве каталогов,Это возможно, но не очень хорошо и непонятно для разработчиков.
Я уже видел pecl-apd (2008) и pecl-runkit (2007), но среди других больше нет таких peclsмой Gentoo репозиторий или оверлеи.Итак, как переопределить функцию современным способом?
== upd ===
ОК.Давайте углубимся.
Предположим, у нас есть каталог /home/me/repos/
, где размещены наши модули git, и виртуальный хост /var/srv/domain.com
, где все это собрано
repos_
\_site_root_
\_.git
\_file1
\_module1_
\_.git
\_we_need_this_file_too
\_module2_
\_.git
domain.com_
\_htdocs –> ~/repos/site_root
\_tmp
, поэтому нам нужнокаким-то образом включить в проект папки с модулями 1 и 2.Затем добавьте путь к ~ / repos в php include_path через vhost config
php_admin_value include_path ".:/home/me/repos"
Теперь php может
include ('module1/we_need_this_file_too');
из моего каталога repos.но когда он пытается проверить файл перед включением в file_exists (), он терпит неудачу, потому что эти каталоги все еще закрыты для file_exists (). Это проблема.
Теперь я нашел обходной путь с абсолютными путями, в любом случае мне нужно было бы создать личную конфигурацию в моем проекте.Я также собирался выполнить chdir () в /home/me/repos/
, когда это необходимо (и описал секцию <Directory>
в vhost), но это была плохая идея.