PHP获取站点根目录

  1 将下面的代码放在网站根目录下的一个文件中,以便在其它文件中引用。
  2 
  3 路径方式:
  4 
  5 define('BASE_PATH',str_replace('\','/',realpath(dirname(__FILE__).'/'))."/");
  6 
  7 echo BASE_PATH;
  8 
  9  
 10 
 11 输出结果:E:/wwwroot/
 12 
 13 url方式:
 14 
 15  
 16 
 17 $PHP_SELF=$_SERVER['PHP_SELF'];
 18 
 19 $url='http://'.$_SERVER['HTTP_HOST'].substr($PHP_SELF,0,strrpos($PHP_SELF,'/')+1);
 20 
 21 echo $url;
 22 
 23  
 24 
 25 输出结果:http://localhost/
 26 其它的资料整理:
 27 PHP取得站点根目录
 28 
 29  
 30 
 31 echo $_SERVER['HTTP_HOST'];//当前请求的 Host: 头部的内容 即域名信信息
 32 
 33 echo $_SERVER['PHP_SELF'];//当前正在执行脚本的文件相对网站根目录地址,就算该文件被其他文件引用也可以正确得到地址
 34 
 35  
 36 
 37 echo $_SERVER['SCRIPT_NAME'];//当前正在执行脚本的文件相对网站根目录地址,但当该文件被其他文件引用时,只显示引用文件的相对地址,不显示该被引用脚本的相对地址。
 38 
 39  
 40 
 41 echo $_SERVER['DOCUMENT_ROOT'];//网站相对服务器地址即网站的绝对路径名 #当前运行脚本所在的文档根目录。在服务器配置文件中定义
 42 
 43  
 44 
 45 echo $_SERVER['SCRIPT_FILENAME'];//当前执行脚本的绝对路径名。
 46 
 47  
 48 
 49 方法一:
 50 
 51  
 52 
 53 今天讲了大致的站点目录结构,其中说到了怎样取得站点根目录,好多同学不是很理解,下面一步一步道来:
 54 
 55  
 56 
 57 我的站点目录据对路径:D:wwwmessage2011,测试文件路径:D:wwwmessage2011includeconfig.inc.php
 58 
 59  
 60 
 61 在根目录下新建一个文件,也可以隔一层目录创建,就以上面为例,我要在config.inc.php中取得站点的根目录。
 62 
 63  
 64 
 65 1、取得当前文件的路径:用魔术常量__FILE__。这里的路径包含了文件名,结果如下:
 66 
 67  
 68 
 69 D:wwwmessage2011includeconfig.inc.php
 70 
 71  
 72 
 73 2、去掉上面路径的文件名,得到纯路径:dirname(__FILE__),结果如下:
 74 
 75  
 76 
 77 D:wwwmessage2011include
 78 
 79  
 80 
 81 3、返回一层目录到根目录:realpath(dirname(__FILE__).'/../'),结果如下:
 82 
 83  
 84 
 85 D:wwwmessage2011
 86 
 87  
 88 
 89 4、把向左的”“转化成向右的”/“:str_replace( '\' , '/' , realpath(dirname(__FILE__).'/../')),结果如下:
 90 
 91  
 92 
 93 D:/www/message2011
 94 
 95  
 96 
 97 到这就是我们想要的站点根目录了,可以根据需求设定第三步返回目录层数,比如:返回2层就是 /../../,那么就会得到 D:www,以此类推。
 98 
 99  
100 
101 方法二:
102 
103  
104 
105 在global.inc   里定义根目录
106 
107  
108 
109 define("APP_ROOT",dirname(__FILE__));
110 
111  
112 
113 在任何PHP文件中可以引用该常量
114 
115  
116 
117 require_once(APP_ROOT."/inc/head.php");
118 
119  
120 
121  
122 
123 方法三:
124 
125  
126 
127 <?php
128 
129  
130 
131 $PHP_SELF=$_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
132 
133  
134 
135 $url='http://'.$_SERVER['HTTP_HOST'].substr($PHP_SELF,0,strrpos($PHP_SELF, '/')+1);
136 
137  
138 
139 echo $url;
140 
141  
142 
143 方法四:
144 
145  
146 
147 $basepath=$_SERVER['PHP_SELF'];
148 
149  
150 
151 $basepath=substr($basepath,0,strpos($basepath,"文件夹名称"));
152 
153  
154 
155 echo $basepath;
156 
157  
158 
159 如:你把文件保存为a.php并路径为:/wjj/wjj1/wjj2/a.php
160 
161  
162 
163 上面的例子就写成:
164 
165  
166 
167 $basepath=$_SERVER['PHP_SELF'];
168 
169  
170 
171 $basepath=substr($basepath,0,strpos($basepath,"wjj1"));
172 
173  
174 
175 echo $basepath;
176 
177  
178 
179 方法五:
180 
181  
182 
183 $basepath=$_SERVER['PHP_SELF'];
184 
185  
186 
187 preg_match("/(/)?([^/]+)/",$basepath,$wjm);
188 
189  
190 
191 echo $wjm[0];
192 
193  
194 
195 注意,第二种方法我不太会,如文件路径为:/wjj/wjj1/wjj2/a.php,它只返回 /wjj 后面的/自己加!
196 
197  
198 
199 ?>
原文地址:https://www.cnblogs.com/hgj123/p/4564111.html