ホームページ  >  記事  >  バックエンド開発  >  ディレクトリが必要です

ディレクトリが必要です

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

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'


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

init.inc.php:

require 'config/config.inc.php'

init.inc .php には config.inc.php が含まれていませんか? もちろん見つかります。

phpはエントリファイルのパスを参照していませんか?つまり、config.inc.php を探すときは、「uploads/config/config.inc.php」というパスに従って検索する必要がありますが、明らかにこのパスは存在せず、存在するのは「uploads/include/config」です。 /config.inc.php」。そうではありませんか?

require 'config/config.inc.php';

init.inc.php で実行されていませんか?
したがって、uploads/include/config/config.inc.php のみが存在するので、もちろんそれをロードします

#2 の説明は正しいです
Uploads/config/config.inc.php ファイルがある場合、このファイルは次のようになります
言い換えれば、このメソッドを使用してアプリケーション システムの動作を妨害することができます

以下は、require リクエスト ファイルの処理を記述した私の疑似コードです。それが正しいかどうかを確認してください:

相対パス: が前に続きます。 ./ または ../ パス (「./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;        }    }}

Index.php ページにアクセスする場合
'config/config.inc.php' が必要です
実際には有効になるのは
file_path=conbine (呼び出しステートメントが配置されているディレクトリ、パス) です
ここで呼び出しステートメントが配置されているディレクトリは、init.inc.php ファイルが配置されているディレクトリです。正しく見つけられます。

はい、そうです

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