php中如同不能像asp那样用“/”表明根目录,代之以$_SERVER['DOCUMENT_ROOT'],其它则相同:../表明向上一层。./表明当时层。假设现在a/b/c/s.php要调用根目录下的/bb/s2.txt,则:
$RootDir=$_SERVER['DOCUMENT_ROOT'];
$fireDir=$RootDir/bb/s2.txt;
或许:“微信营销软件"../../../bb/s2.txt”表明向上返回到b再向上到a再向上到根目录然后到bb下。
前一阵子老是受php开发中,文件彼此引进require()相对方位联系的困扰,为了完全澄清它们的联系,笔者做了个试验。
以下是试验图:
当时项目(project2)的绝对途径是:D:\www\php_case\Coucom_make。也便是咱们当时项目的根目录root.
为了能愈加清楚的表述不同等级的目录文件彼此的引进问题,偶斗胆将引证分红三种类型即:上级对下级的引证(简称上级引证,英文译为:superiortounderling。简称(stou)).
下级对上级的引证(简称下级引证,英文反之便是)
平级引证或叫同级引证(英文:paratactic)。
好了,咱们清晰了引证类型,下面咱们来看不同类型引证它们有着什么样的规矩。
咱们先来说说上级引证:
看咱们的试验图,在图中项目下别离有aabbee三个同级目录和一个index.php文件,在bb下又有cc目录,cc下又有dd目录和cc.phpccc.php两个文件,相同dd下也包括一个dd.php文件。但凡上层对基层均属上级引证.
例如:index.php关于一切文件的引证:
cc.php对dd.php的引证:
ee.php对dd.php的引证:
咱们细心看一下目录结构,便会发现这三种引证尽管同归于上级引证,但它们又不完全相同,我把它分红两种状况:即在上级引证中存在两种引证状况:1.隶属的上级引证(类如cc.php对dd.php,,由于这两个文件同归于cc目录)2.非隶属的上级引证(类如index.php关于一切文件的引证和ee.php对dd.php的引证都归于这种状况由于它们与被引证的文件并没有一个一起的父目录,在能相关于站点根目录).
关于隶属上级引证:
以下是在cc.php对dd.php的引证
require('dd/dd.php');
关于非隶属上级引证:
以下是在ee.php中对cc.php的引证
require('../bb/cc/cc.php');
以上所说的是上级引证,下面咱们来了解一下下级引证!同理基层对上层的引证都归于下级引证,相同分红隶属与非隶属两类,隶属下级引证相对途径以它们的父目录为根目录,例如:
Ttt.php对bbff.php的引证就归于这种状况:require('../bb/cc/cc.php');
非隶属的下级引证却是以站的根目录为准的,例如:
ccc.php对ee.php的引证:require('../../ee/ee.php');
以上是下级引证的介绍,终究咱们来看一下平级引证或许叫同级引证,其实同级引证也是分为这两种状况:隶属同级引与非隶属同级引证
隶属同级引证很简单:即在同一个目录下的两个文件的引证
例如:在dd.php中引证ttt.phprequire('ttt.php');
非隶属同级引证:即不在同一个目录下(没有一起的父目录,只要以站目站为父目录的状况),但是等级是相同的两个文件的引证,例如:在aa.php在引证ee.phprequire('../ee/ee.php');
以上是三种类型不同状况下的引证,别的还有涉及到嵌套引证的问题
比方:
ff.php引证dd.php,而dd.php又引证的gf.php,这种状况,原本dd.php引证gf.php归于下级引证中的非隶属引证,写法是这样的:require('../../../ee/gf.php');而ff.php引证dd.php归于上级引证中的隶属引证,写法是这样的:require('./cc/dd/dd.php');但是你会发现在ff.php中无法找到gf.php文件,那该如何写呢?我告知你应该在dd.php中这样写:require('../ee/gf.php');只要这样写就正确了,为什么呢?由于在涉及到嵌套引证的时分被引证文件的相对途径要以终究的引证文件为准!
简而言之:
其实很简单的,你用你的web根目录做根目录.不论你怎样定,你文件必定有一个悉数都要包括的文件的,比方有的较global.php,有的较common.php
假设这个文件放再根目录
wwwroot/global.php
里边榜首行你加个chdir(dirname(__FILE__));//切换到global.php地点目录便是跟目录
其他文件运用
require../../../global.php;
requireaa/aa.php;
requirebb/bb/cc.php;
这样就行了,由于你的global.php现已把途径切换到wwwroot了,你不必像很多人那么费事
define('ROOT_PATH',dirname(__FILE__));
requireROOT_PATH.....
chdir(dirname(__FILE__));确实很好使,相对方位引进这个文件其他引进文件只要以他为基准就好了。
;本文来自:口碑营销蜓云koubei.tingclouds