假設訪問路徑是:php
http://localhost/test.src/test.php/home/user/login/?user=root&pwd=111
一、$_SERVER['SCRIPT_NAME']html
它是從客戶端來看、不包含域名的腳本文件路徑,即:服務器
/test.src/test.php
若是你想引用腳本自身,例如把一個表單提交給本身處理時,這能夠用這個。框架
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="get">
二、$_SERVER['SCRIPT_FILENAME']優化
與 $_SERVER['SCRIPT_NAME'] 不一樣的是,這是代碼運行時腳本文件在服務器端的絕對路徑, 即:url
c:/wamp/www/test.src/test.php
說得通俗一點,這就是文件在服務器硬盤上的路徑。code
三、$_SERVER['PHP_SELF']orm
與$_SERVER['SCRIPT_NAME']相似,但它還包括了後面第一個問號以前的部分,即:htm
/test.src/test.php/home/user/login/
四、$_SERVER['PATH_INFO']get
它是$_SERVER['SCRIPT_NAME']以後、第一個問號以前的內容,即:
/home/user/login/
它常常用來作爲傳參載體,被不少系統用來優化url路徑格式,最著名的如THINKPHP框架。
可是這個變量不必定會有值,也可能不存在。
/*下面的連接形式不會有PATH_INFO變量*/ http://localhost:83/test.php/index.php http://localhost:83/test.php/ /*下面的連接形式有PATH_INFO變量,但值爲符'/' */ http://localhost:83/test.php/index.php/ http://localhost:83/test.php/index.php/?a=b$c=d /*綜上得出只要腳本文件名後下一個字符爲'/',就會有變量PATH_INFO */
php.ini中的配置參數cgi.fix_pathinfo是用來對設置cgi模式下爲php是否提供絕對路徑信息或PATH_INFO信息。沒有這個參數以前PHP設置絕對路徑PATH_TRANSLATED的值爲SCRIPT_FILENAME,沒有PATH_INFO值。設置這個參數爲cgi.fix_pathinfo=1後,cgi設置完整的路徑信息PATH_TRANSLATED的值爲SCRIPT_FILENAME,而且設置PATH_INFO信息;若是設爲cgi.fix_pathinfo=0則只設置絕對路徑PATH_TRANSLATED的值爲SCRIPT_FILENAME。cgi.fix_pathinfo的默認值是1。
五、$_SERVER['QUERY_STRING']
它是第一個問號之後的內容,即:
user=root&pwd=111
六、__FILE__
__FILE__是代碼定義時的腳本文件自己的絕對路徑。它與$_SERVER['SCRIPT_FILENAME']有點不一樣,下面看一個實例。假設a.php包含了b.php。
// 如下是test/a.php腳本中的內容: <?php include("b.php"); ?>
那 麼在b.php中,$_SERVER['SCRIPT_FILENAME']可能會是 /home/a88888888/public_html /test/a.php。雖然$_SERVER['SCRIPT_FILENAME']是在b.php內,但b.php是在a.php內運行的,所以獲得 的是a.php的路徑。而在b.php中,__FILE__可能會是 /home/a88888888/public_html/test/b.php, 這是__FILE__所處的真正位置。
七、basename()獲取文件名,dirname()獲取目錄名,dirname($dir). '/' .basename($dir)就是指定文件在服務器端的完整路徑
八、getcwd()獲取當前腳本文件所在的服務器端目錄路徑,返回結果先後都不會有斜槓