您好,欢迎访问一九零五行业门户网

遇到一个文件路径的问题,求教

文件路径
遇到了和该帖楼主一样的问题http://hi.baidu.com/linywh/item/1ae8ac335f0d4ef8e6bb7a73
我的项目文件夹结构是这样的|――images|――include  |――class  |――config  |――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就不会出现错误
我按照那个帖子的方法做了,问题解决了,但是我还是不能理解为什么不出错了?在我这,这两个文件路径输出出来分别是这样的:
d:\web\graduatesmanagement../class/database.class.php
d:\web../class/database.class.php
这两个路径实在是看不懂,求各位帮忙解答一下,谢过。
回复讨论(解决方案) include的操作可以看作只是把代码插进来,无论嵌套多少层,最终会进入主文件
所以,文件路径是以主文件所在路径(执行路径)为基础的,相对路径也以此计算出来
抓住这条原则就够了,善用__dir__,__file__,realpath(),$_server等常量、变量和函数
你要确定当前执行的目录是哪里,可以使用getcwd来确定下当前的执行路径在哪里,因为有时候是可以通过chdir可以改变当前路径的。
另外也就是楼上说的,在没有使用chdir时,都是以最开始的文件为主文件(通常是index.php),也就是说大多数是getcwd的路径等于主文件所在路径,相当路径也要以此为相对路径的基础。
而使用了dirname(__file__)是当前执行文件的路径,在以此为基础在拼合绝对路径,就和主文件的路径没有关系了,而是真实的绝对路径。
所以建议在以后的代码中,能使用绝对路径的话,就别使用相对路径了。
其它类似信息

推荐信息