osadmin のディレクトリは次のとおりです
Index.php は、uploads ディレクトリにあり、
init.inc.php は、uploads/include ディレクトリにあります
config.inc.php は、uploads/include/config ディレクトリにあることに注意してください
index.php:
require ('./include/init.inc.php');
init.inc.php:
require 'config/config.inc.php';
論理的に言えば、 Index.php ページで、config.inc を探します。 .php ページのパスは、uploads/config/config.inc.php であるはずですが、これは間違ったパスですが、実際の操作ではなぜこのパスが見つかるのでしょうか?どうやって見つけたのか説明してもらえますか?
絶対パスでも相対パスでもないパスを分析することに意味はありますか?
(補足) include_path: '.;C:phppear'
require 'config/config.inc.php'
init.inc .php には config.inc.php が含まれていませんか? もちろん見つかります。
require 'config/config.inc.php';
init.inc.php で実行されていませんか?
したがって、uploads/include/config/config.inc.php のみが存在するので、もちろんそれをロードします
#2 の説明は正しいです
Uploads/config/config.inc.php ファイルがある場合、このファイルは次のようになります
言い換えれば、このメソッドを使用してアプリケーション システムの動作を妨害することができます
相対パス: が前に続きます。 ./ または ../ パス (「./include/init.inc.php」など)
疑似相対パス: 先頭に ./ または ../ がなく、絶対パスではないパス (「config/config.php」など) inc.php'
現在の作業ディレクトリ: Web 環境、つまりエントリ ファイルが配置されているディレクトリ
if(path为绝对路径){ file_path=path;}else if(path为相对路径){ file_path=conbine(当前工作目录,path);}else{ //伪相对路径 dir_list=include_path; dir_list.add(当前工作目录); dir_list.add(调用语句所在目录); foreach(dir_list as dir){ temp_path=conbine(dir,path); if(temp_path存在){ file_path=temp_path; return; } }}