重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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=""」と書いてみたけど、うまくいきませんでした

A 回答 (1件)

カレントの意味を誤解してる気がするんですが。


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')
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
参考になりましたー

お礼日時:2012/11/30 22:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!