include_path

制御構造

 状態:未整理  閲覧数:3,579  投稿日:2010-05-03  更新日:2015-07-02  
読込先ファイルが格納されているディレクトリ



「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


読み込み先ファイル内での「return」

include

コメント投稿(ログインが必要)



類似度ページランキング
順位 ページタイトル抜粋
1 include_path 100
2 include 74
3 http_build_query 64
4 preg_match 64
5 realpath 60
6 set_error_handler 55
7 session.hash_function 55
8 include require 52
9 session_save_path() 52
10 parse_url( ) 50
11 unexpected T_STRING 50
12 Doctrine 50
13 Exceptionクラス 50
14 array_filter 50
15 array_reduce 50
16 unexpected T_VARIABLE 48
17 php-devel 48
18 register_shutdown_function 47
19 session_set_save_handler() 47
20 session.gc_maxlifetime 47
2024/3/29 21:19 更新
週間人気ページランキング / 3-22 → 3-28
順位 ページタイトル抜粋 アクセス数
1 コード例 … 「例外処理」はネストすることができる 9
2 Parse error: syntax error, unexpected 'public' (T_PUBLIC) | Parse error(エラーメッセージ) 8
2 セッション管理が必要な理由は、HTTPプロトコルには状態を保持する機能がないため | セッション 8
2 ブラウザを閉じたらセッションデータはどうなるの? | セッション 8
3 Fatal error: Access level to ▲::$△ must be protected (as in class ●) or weaker | Fatal error(エラーメッセージ) 7
4 PHPで定数を定義する方法は2種類ある / 配列定数の定義 6
4 curl で Cookie を使用する 6
5 Fatal error: Call to undefined method MDB2_Error::execute() in ○○ on line △△ | Fatal error(エラーメッセージ) 5
6 Warning: PDO::query(): LOAD DATA LOCAL INFILE forbidden | Warning(エラーメッセージ) 4
7 スコープ | 変数 3
8 ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column | Fatal error(エラーメッセージ) 2
8 Trying to get property of non-object  | Notice(エラーメッセージ) 2
8 定数 2
8 PHPにおけるメソッドのオーバーライドについて /「引数の数や型は、親クラスのメソッドと完全に一致していなければなりません。」とは具体的にどういう意味ですか? 2
8 ガベージコレクション | 機能 2
8 Warning: include() [function.include]: Failed opening '**.php' for inclusion (in | Warning(エラーメッセージ) 2
8 Warning: strlen() expects parameter 1 to be string, array given in ○○.php on line △△ | Warning(エラーメッセージ) 2
8 Fatal error: Uncaught Wrench\Exception\HandshakeException: No accept header receieved on handshake response in ★★★ headless-chromium-php/vendor/wrench/wrench/lib/Wrench/Protocol/Protocol.php | エラーメッセージ 2
8 Composer | 依存関係マネージャ 2
8 PHP用語 2
2024/3/29 1:01 更新