PHP中./和/的使用区别,相对路径嵌套包含问题,项目中使用绝对路径

  • ./:表示同级目录(当前文件所属文件夹),每个文件夹下都有“.”文件,代表当前目录
  • ../:表示上级目录(当前文件所属文件夹的上级文件夹),每个文件夹下都有“..”文件,表示上级目录
  • 什么都没有:就是表示同级目录。区别./在于./会自动匹配任意目录下的.文件夹,被其他文件包含之后会找那个文件的同级目录,而什么都没有则只会从自身文件所在目录开始(比./安全),当被其他文件包含之后也只是找原始路径同级目录

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根目录里面,即整个项目文件路径不被破坏,扔到其他服务器照样执行。

猜你喜欢

转载自blog.csdn.net/TCF_JingFeng/article/details/83994808