ホームページ >バックエンド開発 >PHPチュートリアル >require_once は奇妙な現象です。見てみましょう

require_once は奇妙な現象です。見てみましょう

WBOY
WBOYオリジナル
2016-06-23 13:38:29961ブラウズ

ルートディレクトリにある私のファイル require_once("test/1.php"); 次に 1.php require_once("2.php");
ケース 1. ルートディレクトリに 2.php が存在する場合、プログラムは参照します。ディレクトリ内のルート 2.php
状況 2. ルート ディレクトリに 2.php が存在しない場合、プログラムはテスト ディレクトリ内の 2.php も参照します
状況 2 が発生する理由はわかりません。それは何ですか?
require_once の場合、最初のページのパスに基づいていませんか?



ディスカッションへの返信 (解決策)

include_path の値を変更しない限り、不可能です。

http://www.iloveweb.com.cn/test.rar


これはテスト ファイルです。興味があれば、ぜひ見てください。私も混乱しています。比較には相対パスを使用するとよいでしょう。混乱している場合は、次のような絶対パスを使用してみてください: dirname(__FILE__)."/test/1.php"

実行されたファイルに基づいて include (include_once, require, require_once)

検索include_path で示されたパスに従ってファイルを検索します

一般的には include_path = ".:/path1:/path2" (UNIX) または include_path = ".;path1;path2" (WINDOW)
つまり、.,/ の順で検索しますpath1,/path2.... したがって、検索の順序は、実行されたプログラムが配置されているディレクトリ、インクルードされたファイルが配置されているディレクトリ、および include_path で指定されたその他のディレクトリです

この設計の利点は、変更できることです元のプロジェクトを変更することなく、元のプロジェクトの一部の動作を実行する

Index.php (require_once ("test/1.php");)
test/1.php (require_once("2.php");)
test /2.php
2.php (この 2.php は test/2.php を置き換えます)

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。