質問: php_value include_pathを無効 php_value include_pathを、あるディレクトリ以下では、無効にしたいのですが、 どうすればよいでしょうか? ■前提 ・サイト全体は、「.htaccess」に「php_value include_path」を書いて制御 ■やりたいこと ・ある特定ディレクトリ「hoge」以下では、「php_value include_path」ではなく、 phpに直接書いた「require_once './★★/●●';」を利用したい ・つまり、設定ファイル「.htaccess」に記述した中のある一部分(特定ディレクトリ以下)だけは、「phpソースに記述」したincludeパスを使いたい ■試してみてダメだってこと ・「hoge」に「.htaccess」を設置し、空の「php_value include_path=""」と書いてみたけど、うまくいきませんでした
回答: カレントの意味を誤解してる気がするんですが。 apache から呼び出された最初のファイル(たとえば /home/aaa/index.php)のある場所(/home/aaa)が、カレントで、そこから連鎖的に、次々異なるディレクトリーのファイルを読み込んだとしても、カレントは今読んでるファイルの場所ではなく、最初のファイルのある場所(/home/aaa)です。 include 先を ./ から記述すると include_path に関係なく、カレント=最初のファイルのある場所(/home/aaa)内でファイルを探します。 よって、連鎖して呼ばれたファイル(たとえば /home/ccc/xxx.php)からみた同じディレクトリーのファイル(たとえば /home/ccc/zzz.php)を呼び出したいなら require_once( dirname(__file__).'/zzz.php' ); のようにして、絶対パスを作る方が、ファイル検索時間がかからない分、速いです。 .htaccessで指定するなら php_value include_path="/home/ccc" のように、その .htaccessが置いてあるディレクトリーの絶対パスのみを指定して 該当ディレクトリー内のファイルから呼び出すときは、先頭に ./ を付けないでファイル名またはサブディレクトリー名からのみ記述します。 require_once('zzz.php')