今、私はfile_exists()関数で立ち往生しています。私のプロジェクトはリポジトリから構築されており、1つはDocRootとしてシンボリックリンクされており、その他はinclude_pathを介してphpインタープリターで利用できます。しかし、デフォルトのfile_exists()は、include_pathの下のどこかに配置されているファイルを確認できないため、このfuncをラッパーで再定義するか、独自に作成して他のモジュールに含め、ディレクトリツリー内のこのfuncのすべての一致を置き換える必要があります。 。それは可能ですが、良くはなく、開発者にとっては明確ではありません。
私はすでにpecl-apd(2008)とpecl-runkit(2007)を見てきましたが、私のgentooリポジトリやオーバーレイにはそのようなpeclはもうありません。では、関数を現代的な方法で再定義する方法は?
== upd ===
Ok。もっと深く行きましょう。
/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のフォルダーをプロジェクトに含める必要があります。次に、vhost configを介して〜/reposへのパスをphpinclude_pathに追加します
php_admin_value include_path ".:/home/me/repos"
今phpはできます
include ('module1/we_need_this_file_too');
私のリポジトリディレクトリから。ただし、file_exists()に含める前にファイルをチェックしようとすると、file_exists()に対してこれらのディレクトリがまだ閉じられているため、失敗します。これが問題です。
これで、絶対パスを使用した回避策が見つかりました。とにかく、プロジェクトで個人用の構成を作成する必要があります。また、必要なときにchdir()を実行しよう/home/me/repos/
としています(そしてvhostでセクションを記述しています<Directory>
)が、それは悪い考えでした。