- ./:表示同级目录(当前文件所属文件夹),每个文件夹下都有“.”文件,代表当前目录
- ../:表示上级目录(当前文件所属文件夹的上级文件夹),每个文件夹下都有“..”文件,表示上级目录
- 什么都没有:就是表示同级目录。区别./在于./会自动匹配任意目录下的.文件夹,被其他文件包含之后会找那个文件的同级目录,而什么都没有则只会从自身文件所在目录开始(比./安全),当被其他文件包含之后也只是找原始路径同级目录
1、路径定义如下根目录下include.php和father。father下father.php和son,son目录下son.php
father.php中引入son.php采用的son/son.php来引用,表示同级目录,结果如下,显示正确。
此时访问的include.php中,包含了father.php和son.php的代码,也就是
但是此时代码中include_once "son/son.php",所引用的son.php不在include.php同级目录,说明采用这种访问的是father.php自身文件同级目录,所以才能访问到,而不是include.php同级目录(因为现在所有代码都加在到include.php文件里了)。
于是,请看另外一种情况:
这里直接访问father.php,是没有问题的。
但是访问include.php就会报错:
找不到那个son.php路径,问题就在于father.php中使用的./son/son.php去包含。而include.php包含了father.php
则include.php中代码如下:
这里所有代码都加在到了include.php,所以./son/son.php会在当前include.php文件同级目录下找son.php,所以找不到。而什么都不写即son/son.php会在father.php自身文件同级目录下找son/son.php,才能找到。
所以一般项目推荐用绝对路径访问
虽然会损耗一些性能,但是对于项目而言这样更安全可靠。_DIR_就只当前目录所在路径,前面的路径变了没关系,只要son.php还在son里面,father.php还在father目录里面,include.php还在jeffery根目录里面,即整个项目文件路径不被破坏,扔到其他服务器照样执行。