2011-08-01 43 views
0

私はちょっと混乱しています。その答えが出てくると、問題がどこに役立つかを調べ始めるのに役立ちます。PHPパススルーの問題

私は/folder1/API.phpを使用しています:require_once( '../ folder2/Core.php');

私は/folder1/Panel.phpを使っています:require_once( 'folder2/Core.php'); (「..」がないことに注意してください)。

どうやら、API.phpとPanel.phpは、同じフォルダにあるがrequire_onceのパラメータが異なっていても、Core.phpを見つけることができます。

even /folder2/Core.phpにrequire_once( '../ folder3/DBConfig.php')があります。 API.phpが通過できるのですが、Panel.phpから関数を呼び出すと、「../folder3/DBConfig.php」が見つかりません。

+0

チェックフォルダ1内にフォルダ2があれば! – Shameer

+0

Panel.phpとAPI.phpを単独で使用しているのですか、それとも別のスクリプトに含まれているのでしょうか? – Arkh

答えて

4

あなたのインクルードパスでも検索(またはインクルード)すると、そこにフォルダが含まれている可能性があります。

ファイルは、指定されたファイルパスに基づいて含まれます。指定されていない場合は、 include_pathが指定されています。ファイルが include_pathに見つからない場合、include()は最後に呼び出し元のスクリプトの ディレクトリと現在の作業ディレクトリをチェックインしてから失敗します。 include()構文は、ファイルが見つからない場合に警告を出します。この は、require()とは異なる動作であり、致命的なエラーが発生します。 http://www.php.net/manual/en/function.include.php

0

は...がindex.phpが別のフォルダにあるファイルtest.phpが含まれて言うことに注意してください。

test.phpには、他のファイルへの相対パスが含まれています。

test.phpindex.phpに含まれているので、その中のすべての相対パスは、index.phpに対して計算される(したがって、最も破壊する)


1つの以上のもの:

Files are included based on the file path given or, if none is given, the include_path specified. If the file isn't found in the include_path, include() /and likewise require/ will finally check in the calling script's own directory and the current working directory before failing.

+0

私はそれを理解していますが、同じファイルを同じディレクトリに置いているが、それぞれに異なるパスがある2つのファイルがありました。 – ninjaneer