php獲取站點根目錄

將下面的代碼放在網站根目錄下的一個文件中,以便在其它文件中引用。

路徑方式:

define('BASE_PATH',str_replace('\\','/',realpath(dirname(__FILE__).'/'))."/");

echo BASE_PATH;

 

輸出結果:E:/wwwroot/

url方式:

 

$PHP_SELF=$_SERVER['PHP_SELF'];

$url='http://'.$_SERVER['HTTP_HOST'].substr($PHP_SELF,0,strrpos($PHP_SELF,'/')+1);

echo $url;

 

輸出結果:http://localhost/

其它的資料整理:

PHP取得站點根目錄

 

echo $_SERVER['HTTP_HOST'];//當前請求的 Host: 頭部的內容 即域名信信息

echo $_SERVER['PHP_SELF'];//當前正在執行腳本的文件相對網站根目錄地址,就算該文件被其他文件引用也可以正確得到地址

 

echo $_SERVER['SCRIPT_NAME'];//當前正在執行腳本的文件相對網站根目錄地址,但當該文件被其他文件引用時,只顯示引用文件的相對地址,不顯示該被引用腳本的相對地址。

 

echo $_SERVER['DOCUMENT_ROOT'];//網站相對服務器地址即網站的絕對路徑名 #當前運行腳本所在的文檔根目錄。在服務器配置文件中定義

 

echo $_SERVER['SCRIPT_FILENAME'];//當前執行腳本的絕對路徑名。

 

方法一:

 

今天講了大致的站點目錄結構,其中說到了怎樣取得站點根目錄,好多同學不是很理解,下面一步一步道來:

 

我的站點目錄據對路徑:D:\www\message2011,測試文件路徑:D:\www\message2011\include\config.inc.php

 

在根目錄下新建一個文件,也可以隔一層目錄創建,就以上面爲例,我要在config.inc.php中取得站點的根目錄。

 

1、取得當前文件的路徑:用魔術常量__FILE__。這裏的路徑包含了文件名,結果如下:

 

D:\www\message2011\include\config.inc.php

 

2、去掉上面路徑的文件名,得到純路徑:dirname(__FILE__),結果如下:

 

D:\www\message2011\include

 

3、返回一層目錄到根目錄:realpath(dirname(__FILE__).'/../'),結果如下:

 

D:\www\message2011

 

4、把向左的”\“轉化成向右的”/“:str_replace( '\\' , '/' , realpath(dirname(__FILE__).'/../')),結果如下:

 

D:/www/message2011

 

到這就是我們想要的站點根目錄了,可以根據需求設定第三步返回目錄層數,比如:返回2層就是 /../../,那麼就會得到 D:\www\,以此類推。

 

方法二:

 

在global.inc   裏定義根目錄

 

define("APP_ROOT",dirname(__FILE__));

 

在任何PHP文件中可以引用該常量

 

require_once(APP_ROOT."/inc/head.php");

 

 

方法三:

 

<?php

 

$PHP_SELF=$_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];

 

$url='http://'.$_SERVER['HTTP_HOST'].substr($PHP_SELF,0,strrpos($PHP_SELF, '/')+1);

 

echo $url;

 

方法四:

 

$basepath=$_SERVER['PHP_SELF'];

 

$basepath=substr($basepath,0,strpos($basepath,"文件夾名稱"));

 

echo $basepath;

 

如:你把文件保存爲a.php並路徑爲:/wjj/wjj1/wjj2/a.php

 

上面的例子就寫成:

 

$basepath=$_SERVER['PHP_SELF'];

 

$basepath=substr($basepath,0,strpos($basepath,"wjj1"));

 

echo $basepath;

 

方法五:

 

$basepath=$_SERVER['PHP_SELF'];

 

preg_match("/(\/)?([^\/]+)/",$basepath,$wjm);

 

echo $wjm[0];

 

注意,第二種方法我不太會,如文件路徑爲:/wjj/wjj1/wjj2/a.php,它只返回 /wjj 後面的/自己加!


摘自:http://rmingwang.com/php-access-to-the-site-root-directory.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章