PHP の包含性と相対パス
PHP スクリプトにファイルを含めることは一般的な方法ですが、相対パスを指定すると予期せぬエラーが発生する場合がありますエラー。相対パスの混乱により、サブディレクトリからインクルードされたファイルが別のインクルード ファイルを見つけられないケースを見てみましょう。
この例では、/root/update/test.php にある PHP スクリプトがインクルードしようとしています。別のファイル /root/connect.php。 test.php のコードは、相対パスを使用して connect.php をインクルードし、.:/root のインクルード パスを指定します。ただし、インクルードされたファイル connect.php には、相対パス ../config.php を使用する config.php というファイルの別の include ステートメントが含まれています。
test.php が実行され、次のことを試みたときに問題が発生します。 connect.php で指定された相対パスを使用して config.php を検索します。ただし、test.php で指定されたインクルード パスは 1 レベルの深さしかなく、親ディレクトリに上がって config.php を見つけることはできません。これにより、ファイルをインクルードできないことを示す警告が表示されます。
この問題を解決するには、connect.php で config.php の絶対パスを使用するか、PHP のマジック定数を利用することを検討してください。たとえば、connect.php で __DIR__ を使用すると、config.php が connect.php と同じディレクトリ レベルから確実にインクルードされます:
include(dirname(__DIR__).'/config.php');
または、プロジェクトの固定ルート パスを定義し、それを使用することもできます。 connect.php と test.php の両方のパス:
// in connect.php define('ROOT_PATH', dirname(__DIR__) . '/'); // in test.php include(ROOT_PATH.'config.php');
これらのソリューションにより、相対パスが意図したとおりに機能し、インクルード エラーが解決され、PHP が使用できるようになります。異なるディレクトリのファイルを適切にインクルードするためのスクリプト。
以上がPHP インクルードが相対パスで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。