2009/11/01

[php]require_onceでエラー

下記のような階層構造においてaファイルがrequire_onceでcファイルを呼び出す一方で、呼び出されたcファイルがrequire_onceでbファイルを呼びすとなぜかエラーが発生。

A(フォルダ)
|
--------aファイル
|----bファイル
|----Bフォルダ
|
------cファイル

//aファイル
require_once("./c.php");

//cファイル
require_once("../b.php");


おそらくrequire_onceでの相対パス指定で上位階層のモジュールが読み込めないと似た症状だと思います。
(エラー内容も同じでしたし。)

解決方法として絶対位置指定がありましたが、なんか、相対パスで解決したいなーっと。

で、もう少し調べてみると、require_once()によってインクルードされたファイルのカレントディレクトリは呼び出しもとのディレクトリとなるようです。

というわけで、もしbファイルを呼び出すのなら
//cファイル
require_once("./b.php");

とすればオッケーみたいです。(参考)

これで多重にインクルードされた場合も大丈夫です。

0 コメント:

コメントを投稿