テスト環境: Windows 2003 + PHP5.3.5 + Apache 2.2.19.0
php.ini の include_path は次のように設定されます: include_path="D:php_5.3.5pear;F:PHPLib;" . include_path .現在の作業ディレクトリを表します
include は、初めてファイルを見つけた後に結果をキャッシュします。次回同じパスをインクルードすると、複数の検索を行わずにキャッシュされた結果のみがフェッチされます。これにより、ファイルを削除した後、短時間エラーが報告されます (インクルード メカニズムが、ファイルへのパスを検出するため)。キャッシュされた結果は存在しないため、次のレベルに検索するとエラーが発生します)。したがって、テストする場合は、インクルードの前に clearstatcache(true) を追加するか、ファイルの名前変更または削除の直後に Apache を再起動して、インクルードごとに複数の検索を強制する必要があります。
ps: include のキャッシュ メカニズムの具体的な説明: include は複数の検索を順番に実行しますが、特定のレイヤーがキャッシュされていることが判明した場合は、そのレイヤーのキャッシュ結果パスに関係なく、すぐに検索から抜け出します。存在します。 つまり、第 1 レベルのファイルが存在するにもかかわらずそれを削除すると、インクルード キャッシュが有効であるにもかかわらず、インクルード エラーが発生します。第 1 レベルのファイルが存在せず、第 2 レベルのファイルが存在し、第 1 レベルのファイルを作成した場合、そのファイルはすぐに有効になり、インクルード キャッシュの影響を受けません
1.include('2.php' );
「2.php」は相対パスに基づいて検索を開始しないことに注意してください。 複数の検索シーケンスは次のとおりです:
(1) 絶対パスの場合、絶対パスが存在するかどうかを直接検索します
(2) まずphp.iniから設定します include_pathディレクトリ内のファイルを探します(include_path内の各ディレクトリをたどります)
(3) 次にこのステートメントを呼び出しているファイルが属するディレクトリ(__DIR__)からファイルを見つけます
(4) 最後に、現在の作業ディレクトリからファイルを検索します (getcwd()) ファイルの検索