php绝对路径与相对路径详解

php中不像其他语言那样“/”表示根目录,代之以$_SERVER[‘DOCUMENT_ROOT’],其它则相同:../表示向上级目录。./表示当前目录。假如现在a/b/c/s.php要调用根目录下的 /bb/s2.txt,则:

或者采用相对路径“../../../bb/s2.txt”,表示向上返回到b再向上到a再向上到根目录然后再到bb下找到s2.txt。

绝对路径

绝对路径是指目录下的绝对位置,直接到达目标位置。例如:d:/www/index.html。只要页面中的目标文件位置不变你的链接还是指向正确的URL。在Web开发的时候一般很少使用绝对路径,因为你本地的环境和服务器上的路径可能不一样。

优点:使用绝对路径可以防止网站被恶意抄袭,抄袭默认的链接还是指向自己的网站。

相对路径

相对路径,就是相对于当前文件的目标文件位置。例如:Web服务器文件夹a下面有index.html和image.jpg两个文件。index.html文件里引入image.jpg,只要这两个文件的相对位置没有变(也就是说还是在文件夹a下面),那么无论上传到Web服务器的哪个位置,这个路径都是正确的。在相对路径里面,./表示同级目录,../表示上级目录。

优点:当你整个项目移动时,你项目内文件之间的相对关系没有改变,之前设置的路径任然是准确的

相对路径四种类型:

案例目录

上级对下级的引用(简称上级引用)

先看案例图,在图中项目下分别有aa、bb、 ee三个同级目录和一个index.php文件,在bb下又有cc目录,cc下又有dd目录和cc.php,ccc.php两个文件,同样dd下也包含一个dd.php文件。凡是上层对下层均属上级引用。

从属上级引用

类如cc.php对dd.php,因为这两个文件同属于cc目录)

非从属上级引用

类如index.php对于所有文件的引用和ee.php对dd.php的引用都属于这种情况,因为它们与被引用的文件并没有一个共同的父目录,都相对于站点根目录。以下是在ee.php中对cc.php的引用。

下级对上级的引用(简称下级引用)

从属下级引用相对路径以它们的父目录为根目录

ttt.php对bbff.php的引用就属于这种情况:

非从属的下级引用却是以网站的根目录为准的

ccc.php对ee.php的引用:

平级引用或叫同级引用

从属同级引用

即在同一个目录下的两个文件的引用,在dd.php中引用ttt.php

非从属同级引用

即不在同一个目录下(没有共同的父目录,只有以网站目站为父目录的情况),但是级别是相同的两个文件的引用,在aa.php在引用ee.php

涉及到嵌套的引用

例如ff.php引用dd.php,而dd.php又引用的gf.php,这种情况,本来dd.php 引用gf.php属于下级引用中的非从属引用,写法是这样的:

而ff.php引用dd.php属于上级引用中的从属引用,写法是这样的:

可是你会发现在ff.php中无法找到gf.php文件,那该如何写呢?应该在dd.php中这样写:

只有这样写就正确了,为什么呢?因为在涉及到嵌套引用的时候被引用文件的相对路径要以最终的引用文件为准!

简而言之:

其实很简单的,你用你的web根目录做根目录.不管你怎么定,你文件肯定有一个全部都要包含的文件的,比如有的是global.php,有的是common.php

假如这个文件放在根目录

里面第一行加个chdir(dirname(FILE)); 切换到global.php所在目录就是根目录

其他文件使用

这样就行了,因为你的global.php已经把路径切换到wwwroot,不用像其他方式那么麻烦了

chdir(dirname(FILE)); 的确很好使,相对位置引入这个文件其他引入文件只要以他为基准就好了。

分享 IT 技术和行业经验,请关注技术学派。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180603G0XUUA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券