<?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。