<?php
// index.php
include('widget/widget.php');
?>
<?php
// widget.php
include('../lib/lib.php');
?>
のように、index.php ―(include)→ widget.php ―(include)→ lib.phpと多重includeして、index.phpを実行すると…
“Warning: include(../lib/lib.php) [function.include]: failed to open stream: No such file or directory in /htdocs/widget/widget.php on line 2″
とエラーが出る。
これは実行しているphpファイルのパスがカレントディレクトリになるというphpの仕様があるため、相対パス指定がおかしくなってしまうためです。(C言語のプリプロセッサに慣れてるひとは注意!)
ということで、絶対パスを指定することになります。
ファイル自身の絶対パスは、
dirname(__FILE__)
で取得できるので、具体的には、
<?php
//widget.php
include(dirname(__FILE__) . '/../lib/lib.php');
?>
とすればOK。
