Contents
include_path の役割
通常、include や require を使うときにファイルのフルパスを指定しなくても、include_path に設定されたディレクトリの中から該当するファイルを検索して自動的に読み込めます。
例えば、以下のような include を実行した場合:
include 'config.php';
config.php が現在のスクリプトのディレクトリに存在すれば、そのまま読み込まれる。存在しない場合、include_path に設定されたディレクトリの中から探される。どこにも見つからなければエラーが発生。
include_path の設定方法
- php.ini で設定
サーバー全体の設定を変更したい場合は、php.ini を編集します。
include_path = ".:/usr/local/lib/php"
設定後、Web サーバーを再起動する必要があります。
- .htaccess で設定(Apache 環境)
Apache の .htaccess ファイルでも include_path を設定できます。
php_value include_path ".:/path/to/libs:/path/to/config"
.htaccess を利用する場合は、サーバーの設定で AllowOverride が有効になっている必要があります。
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 のすべてのディレクトリを検索するため、大量のディレクトリを設定するとパフォーマンスが低下する可能性があります。