ホームページ >バックエンド開発 >PHPチュートリアル >ファイルパスに問題が発生したのでアドバイスを求めました。

ファイルパスに問題が発生したのでアドバイスを求めました。

WBOY
WBOYオリジナル
2016-06-23 14:14:45957ブラウズ

ファイルパス

この投稿の投稿者と同じ問題が発生しました http://hi.baidu.com/linywh/item/1ae8ac335f0d4ef8e6bb7a73
我的项目文件夹结构是这样的|――images|――include&nbsp |――class&nbsp |――config&nbsp |――function|――index.php在config文件夹中有一个配置文件config.php class文件夹中有一个文件mysql.class.php   我在        config.php中使用require_once("../class/mysql.class.php");而后我 又在index.php中使用require_once ("include/config/config.php");这时它就提示我错误Warning: require_once(../class/mysql.class.php) [function.require-once]: failed to open stream: No such file or directory in E:\www\blog\include\config\config.php on line 13Fatal error: require_once() [function.require]: Failed opening required '../class/mysql.class.php' (include_path='.;C:\php5\pear') in E:\www\blog\include\config\config.php on line 13照常向我这样的初学者、小菜鸟有百度谷歌逛了一下,找了一个方法dirname(__FILE__)用来获得当前文件夹的绝对路径.和dirname()的嵌套使用dirname(dirname(__FILE__))获得上一层目录于是我就改了我config.phpd require_once语句改为require_once(dirname(dirname(__FILE__))."../class/mysql.class.php");接着在index.php中引用config.php就不会出现错误


その投稿の方法に従って問題は解決しましたが、まだできません なぜエラーが出ないのかわかりますか?私の場合、これら 2 つのファイル パスの出力は次のとおりです:
D:webgraduatesManagement../class/Database.class.php
D:web../class/Database.class.php
これら 2 つのパスは実際には理解できません、説明を手伝ってください、ありがとう。

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

includeの操作は、どれだけネストしても、最終的にはメインファイルに入るということになります
したがって、ファイルパスは、メインファイルのパス(実行パス) これに基づいて相対パスも計算されます

この原則を理解して、__DIR__、__FILE__、realpath()、$_SERVER などの定数をうまく活用すれば十分です。変数と関数

現在の実行パスが chdir を通じて変更される場合があるため、getcwd を使用して現在の実行パスがどこにあるかを確認する必要があります。

さらに、上で述べたように、chdir が使用されない場合、初期ファイルがメイン ファイル (通常はindex.php) として使用されます。これは、getcwd パスの大部分がメイン ファイルのパスと同じであることを意味します。パスも相対パスとしてこれに基づく必要があります。

dirname(__FILE__) の使用は、現在実行されているファイルのパスに基づいて、メインファイルのパスとは関係なく、実際の絶対パスを結合します。

したがって、将来のコードで絶対パスを使用できる場合は、相対パスを使用しないことをお勧めします。

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