以前、
PHP の require や include を指定する際に、相対パスで、親パス(../)を指定しようとしたところ、エラーになってしまった。ので、Windows でも UNIX系でもうまく動くような絶対パスの指定を行った。 >
http://sfi.hamazo.tv/e1317213.html
で、絶対パスを指定することで、回避していたのだが、simpletest の導入など、いろいろ考えていたときに、スクリプト単位でパスを追加するほうが 都合がいいんじゃないかという状況になってきた。
で、調べてみました(というか、思い出せなかったので、検索。)、その設定箇所は
php.ini (他にも .htaccess など) の include_path
でした。あくまでも、全体に設定するのではなく、そのスクリプトだけで指定したかったので、そうなると、こうなります。
ini_set('include_path', '../add_lib');
ただ、さっき調べたときに、専用のコマンドも見つかりました(PHP 4.3.0 以降)
set_include_path('../add_lib');
上のコマンドは、あくまでも include_path の設定なので、そのまま使うと include_path に上書きしてしまう(それまでの設定が使えなくなる)ので
include_path に追記 となると、書き方は下のようになります。
set_include_path(get_include_path() . PATH_SEPARATOR . '../add_lib');
で、話を戻して、
Windows でも UNIX でも使えるように絶対パスで指定したいので、これが完成形(?)
set_include_path(get_include_path() . PATH_SEPARATOR . str_replace('\\', '/', dirname(__FILE__)).'/../add_lib/');
もっと書くと、
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(str_replace('\\', '/', dirname(__FILE__)).'/../add_lib/'));
かな。ながーい。