include_pathについて

設定ディレクティブinclude_pathについて。

include_pathとは?

require(), include(), 及び fopen_with_path() 関数がファイルを探すディレクトリのリストです。指定形式は、システムの環境変数PATHと同じです。つまり、UNIXではコロン(":")で、Windowsではセミコロン(";")で区切ったディレクトリのリストで指定します。指定する場合には、PHP設定ファイル(php.ini)或いはini_set()関数を使用できます。また、設定オプションの値を得るini_get()関数で現在設定されているディレクトリのリストを確認することもできます。

php.iniでの設定例

次の例は、UNIXの場合のinclude_pathの設定例である。

include_path=".:/php/includes"

次の例は、Windowsの場合のinclude_pathの設定例である。

include_path=".;c:\php\includes"

このディレクティブのデフォルト値は、.(カレントディレクトリ)のみです。

ini_set()関数での設定例

次の例は、UNIXの場合のinclude_pathの設定例である。

<?php ini_set("include_path", ".:/php/includes"); ?>

次の例は、Windowsの場合のinclude_pathの設定例である。

<?php ini_set("include_path", ".;c:\php\includes"); ?>

次の例は、UNIXとWindowsを判別(三項演算子の記述部分)して対応する区切り文字を使い分ける例である。

<?php
$include_path = "/foo";
ini_set("include_path",
        ini_get('include_path')
        . ((strtolower(substr(php_uname(), 0, 7)) == "windows") ? ";" : ":")
        . $include_path);
?>

上の例は、次のように記述することもできる。

<?php
if (!defined('PATH_SEPARATOR')) {
  define('PATH_SEPARATOR', strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? ";" : ":");
}
$include_path = "/foo";
ini_set("include_path",
        ini_get('include_path')
        . PATH_SEPARATOR
        . $include_path);
?>

上の例では、定数PATH_SEPARATORが未定義ならば、define関数で定数PATH_SEPARATORを定義します。定数PATH_SEPARATORは、PHP 4.3.0-RC2 以降で導入されました。つまり、上の例は後方互換を考慮した記述なのである。