include_path

制御構造

 状態:未整理  閲覧数:3,372  投稿日: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

Twitter検索結果。「include_path」に関する最新ツイート

かみくだく🇺🇦🤝🇷🇺🤝🇹🇼🤝🇨🇳 @kamikudakun

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

include

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



類似度ページランキング
順位 ページタイトル抜粋
1 include 74
2 http_build_query 64
3 preg_match 64
4 realpath 60
5 set_error_handler 55
6 session.hash_function 55
7 include require 52
8 session_save_path() 52
9 Doctrine 50
10 Exceptionクラス 50
11 unexpected T_STRING 50
12 array_reduce 50
13 parse_url( ) 50
14 array_filter 50
15 unexpected T_VARIABLE 48
16 php-devel 48
17 session_set_save_handler() 47
18 register_shutdown_function 47
19 session.gc_maxlifetime 47
20 SessionHandler::gc 47
2023/6/02 4:43 更新
週間人気ページランキング / 5-26 → 6-1
順位 ページタイトル抜粋 アクセス数
1 ブラウザを閉じたらセッションデータはどうなるの? | セッション 30
2 Parse error: syntax error, unexpected 'public' (T_PUBLIC) | Parse error(エラーメッセージ) 13
3 PHP用語 12
3 Fatal error: Uncaught RuntimeException: SplFileObject::__construct(): failed to open stream: Permission denied in | Fatal error(エラーメッセージ) 12
4 スコープ | 変数 11
5 Fatal error: Access level to ▲::$△ must be protected (as in class ●) or weaker | Fatal error(エラーメッセージ) 10
5 ブラウザを閉じたらセッションデータはどうなるの? | セッション 10
6 Fatal error: require_once(): Failed opening required 'PEAR.php' | Fatal error(エラーメッセージ) 9
7 セッションID | セッション 8
8 セッション管理が必要な理由は、HTTPプロトコルには状態を保持する機能がないため | セッション 7
9 Warning: strlen() expects parameter 1 to be string, array given in ○○.php on line △△ | Warning(エラーメッセージ) 5
9 Warning: include() [function.include]: Failed opening '**.php' for inclusion (in | Warning(エラーメッセージ) 5
9 コード例 … 「例外処理」はネストすることができる 5
10 curl | その他のサービス 4
10 型の種類 | 型 4
10 Cookie | クッキー 4
10 @ | 演算子 4
10 Warning: PDO::query(): LOAD DATA LOCAL INFILE forbidden | Warning(エラーメッセージ) 4
10 Fatal error: Call to undefined method MDB2_Error::execute() in ○○ on line △△ | Fatal error(エラーメッセージ) 4
11 Fatal error: Cannot access protected property ○○ in △△ on □□ | Fatal error(エラーメッセージ) 3
2023/6/2 1:01 更新