PHPで共通に使う外部ファイルを読み込ませたい時、絶対パス指定で require_once をする時が多いと思います。
(ディレクトリ階層が異なる場合や、インクルード先からさらに別ファイルをインクルードしている場合には絶対パスの方が無用なトラブルを避けれるので。。)
しかし、本番環境とローカルの開発環境では絶対パスが異なることが多々有ります。
いちいち各PHP内のファイルを本番にアップする前に置換したりするのは非常に手間です。
で、いい方法はないか探していると、include_path:とことん!ホームページに役立つ方法が。。。
そういう時に以下にようなスクリプトを各PHPの最初に実行するようにしておけばいいようです。(Smartyのライブラリをincludeする例です)
/**
* PHPのinclude_pathを設定。
* 本番環境、テスト環境を切り分ける。
*/
function IncludePathSetting(){
if ($_SERVER['SERVER_NAME']=='www.hoge.exsample' ){
//本番環境
$path = '/usr/home/hoge/smarty/libs/';
} else {
//リモートホスト
$path = 'D:/mydoc/hogeproject/smarty/libs/';
}
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
}
ちなみに、include_pathがうまく設定できてなかったり、パス指定が間違っていると、以下のようなエラーがでます。
Warning: require_once(Smarty.class.php) [function.require-once]: failed to open stream: No such file or directory in D:\hoge.jp\html\test.php on line 20
Fatal error: require_once() [function.require]: Failed opening required 'Smarty.class.php' (include_path='.;C:\php5\pear;D:\hoge.jp\html\') in D:\hoge.jp\html\test.php on line 20
参考: