状態:未整理
閲覧数:3,761
投稿日:2010-05-03
更新日:2015-07-02
読込先ファイルが格納されているディレクトリ
「include」「require」「include_once」「require_once」でファイル読込を行なう際、指定パラメータを直接ファイル名で指定した場合には、読込先ファイルは『PHPの設定ファイル内の「include_path」に指定されたディレクトリ内にあるファイル』となる。
・「インクルードパス取得」 - 「get_include_path()」関数
・「インクルードパス設定」 - 「set_include_path()」関数
インクルードパスを設定する場合、OSによって、UNIX(Linux)の場合は「:(コロン)」で、Windowsの場合は「;(セミコロン)」で区切って複数設定できる。
「ドキュメントルート/hode/index.php」ファイル
「ドキュメントルート/_incs_/port/include.php」ファイル
各「air_a.php」、「air_b.php」、「air_c.php」、「air_d.php」ファイル
▼結果
/demo/_incs_/air/index.php
「include」「require」「include_once」「require_once」でファイル読込を行なう際、指定パラメータを直接ファイル名で指定した場合には、読込先ファイルは『PHPの設定ファイル内の「include_path」に指定されたディレクトリ内にあるファイル』となる。
記述 | 意味 |
---|---|
. | 自分自身 |
(ファイル名) | 同じディレクトリ内のファイル |
./(ファイル名) | 同じディレクトリ内のファイル |
./dir1/(ファイル名) | 同じディレクトリ内にある「dir1」ディレクトリ内のファイル |
/(ファイル名) | ドキュメントルート内のファイル |
../(ファイル名) | 親ディレクトリ内のファイル |
・「インクルードパス取得」 - 「get_include_path()」関数
・「インクルードパス設定」 - 「set_include_path()」関数
インクルードパスを設定する場合、OSによって、UNIX(Linux)の場合は「:(コロン)」で、Windowsの場合は「;(セミコロン)」で区切って複数設定できる。
$path = ".:".$_SERVER["DOCUMENT_ROOT]."/_incs_";//①インクルードパスを「".:".$_SERVER["DOCUMENT_ROOT]."/_incs_"」に設定。「$_SERVER["DOCUMENT_ROOT]」は「ドキュメントルート」のパスが格納されているスーパーグローバル変数。ドキュメントルートとは、例えばドメイン名が「php.w4c.work」であった場合、このアドレスにアクセスした時に表示されるページ(ファイル)が格納されているディレクトリのこと。「php.w4c.work/php」にアクセスして表示されるページは、ドキュメントルート内にある「php」というディレクトリ内にあるファイル。「.」と「$_SERVER["DOCUMENT_ROOT]."/_incs_"」の2つを設定。1つ目は“同じディレクトリ内の”という意味、2つ目はドキュメントルートディレクトリ内の「_incs_」ディレクトリという意味
echo set_include_path($path), "
";//②インクルードパス設定
echo get_include_path();//③インクルードパス取得
echo "
";
include "air1.php";//④air1.php」ファイルの読み込みを行なう。読込ファイル指定が、インクルードパスを使用する指定方法のため、設定したインクルードパスからの読み込みを行なう。まず、このサンプルファイルと同じディレクトリ内を探し、ない場合に「ドキュメントルートディレクトリ /_incs_」ディレクトリを探す
ドキュメントルート(「public_html」等)/
|
+--- air/
| |
| +--- index.php
| |
| +--- air_a.php
|
+--- _incs_/
|
+--- air_a.php
|
+--- air_b.php
|
+--- port/
|
+--- include.php
|
+--- air_a.php
|
+--- air_b.php
|
+--- air_c.php
|
+--- port/
|
+--- air_c.php
|
+--- air_d.php
「ドキュメントルート/hode/index.php」ファイル
$path = ".:".$_SERVER["DOCUMENT_ROOT]."/_incs_";
set_include_path($path);
include "port/include.php";//①「/_incs_/port/include.php」ファイルを読込
「ドキュメントルート/_incs_/port/include.php」ファイル
//echo get_include_path(), "
";//便宜上コメントアウト
include "air_a.php";//②インクルードパスを使用してファイル検索が行われ、読み込み元の「air/index.php」と同じディレクトリ内に「air_a.php」があったのでそれを読込。
echo "
";
include "air_b.php";//③インクルードパスを使用してファイル検索が行われ、読み込み元の「air/index.php」と同じディレクトリ内になく、次の検索先の「ドキュメントルート/_incs_」ディレクトリに「air_a.php」があったのでそれを読込。
echo "
";
include "air_c.php";//④インクルードパスを使用してファイル検索が行われ、読み込み元の「air/index.php」と同じディレクトリ内になく、次の検索先の「ドキュメントルート/_incs_」ディレクトリ内にもなかったので、読み込みに失敗するかと思いきや「/_incs_/port/include.php」と同じディレクトリ内にあった「air_c.php」が読み込まれる。つまり、「air/index.php」ファイルが「/_incs_/port/include.php」ファイルを読み込み、更に「/_incs_/port/include.php」ファイルが別のファイルを読み込む場合、「/_incs_/port/include.php」ファイルが読み込もうとするファイルは「air/index.php」ファイルから見てどこにあるかを指定されたファイルが読み込まれることが基本だが、「air/index.php」ファイルから見てどこにもなく、「/_incs_/port/include.php」ファイルから(を基点として)見るとある場合にはそれが読み込まれる(インクルードパスを使用した場合)。
echo "
";
include "port/air_c.php";//⑤インクルードパスを使用してファイル検索が行われ、読み込み元の「air/index.php」と同じディレクトリ内になく、次の検索先の「ドキュメントルート/_incs_」ディレクトリ内に「port/air_c.php」があったのでそれを読込。
echo "
";
include "port/air_d.php";//⑥読み込み元の「air/index.php」と同じディレクトリ内の「air_a.php」を読込。ここで指定している相対パスより、基点となる読込元ファイルのパスが優先されることに注意
echo "
";
//include "./air_a.php";//⑦読み込み元の「air/index.php」と同じディレクトリ内に「air_b.php」はないので読込失敗。エラー未出力の理由は、便宜上コメントアウトしているため
echo "
";
//include "./air_b.php";//⑧読み込み元の「air/index.php」と同じディレクトリ内に「air_b.php」はないので読込失敗。エラー未出力の理由は、便宜上コメントアウトしているため
echo "
";
//include "./air_c.php";//⑨読み込み元の「air/index.php」と同じディレクトリ内に「air_c.php」はないので読込失敗。エラー未出力の理由は、便宜上コメントアウトしているため
echo "
";
include "../_incs_/port/air_c.php";//⑩読み込み元の「air/index.php」が格納されたディレクトリの親ディレクトリ内の「_incs_/port/air_c.php」を読込。
各「air_a.php」、「air_b.php」、「air_c.php」、「air_d.php」ファイル
echo "__FILE__ : ".__FILE__;
▼結果
/demo/_incs_/air/index.php