• PHP
PHPの include_path とは?

include_path の役割

通常、include や require を使うときにファイルのフルパスを指定しなくても、include_path に設定されたディレクトリの中から該当するファイルを検索して自動的に読み込めます。

例えば、以下のような include を実行した場合:

include 'config.php';

config.php が現在のスクリプトのディレクトリに存在すれば、そのまま読み込まれる。存在しない場合、include_path に設定されたディレクトリの中から探される。どこにも見つからなければエラーが発生。

PHPのinclude_pathの役割 index.php include ‘config.php’; ファイル検索プロセス ステップ1: 現在のディレクトリ ステップ2: include_path (ディレクトリ1) ステップ3: include_path (ディレクトリ2) 成功: ファイルが見つかった 成功: ファイルが見つかった 失敗: エラー発生 include_path = “.:/usr/share/php:/var/www/lib” (php.iniで設定可能なパスのリスト)

include_path の設定方法

  1. php.ini で設定
    サーバー全体の設定を変更したい場合は、php.ini を編集します。
include_path = ".:/usr/local/lib/php"
  1. .htaccess で設定(Apache 環境)
    Apache の .htaccess ファイルでも include_path を設定できます。
php_value include_path ".:/path/to/libs:/path/to/config"

include_path の確認

現在の include_path を確認するには、以下の方法があります。

phpinfo() で確認

PHP の設定を一覧表示する phpinfo() を実行すると、include_path の設定が確認できます。

phpinfo();

get_include_path() を使う

PHP スクリプト内で直接 include_path を取得できます。

echo get_include_path();

include_path の注意点

ファイルの衝突に注意
複数のディレクトリに同じ名前のファイルがある場合、PHP は最初に見つかったものを読み込むため、意図しないファイルを include してしまう可能性があります。

セキュリティリスク
include_path に書き込み可能なディレクトリを設定すると、意図しないファイルを実行される可能性があるため、慎重に設定する必要があります。

パフォーマンスへの影響
include するたびに PHP は include_path のすべてのディレクトリを検索するため、大量のディレクトリを設定するとパフォーマンスが低下する可能性があります。