PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 與 $_SERVER['REQUEST_URI']
$_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 與 $_SERVER['REQUEST_URI'] 三者很是類似,返回的都是與當前 URL 或 PHP 程序文件相關的信息:php
- $_SERVER['PHP_SELF']:相對於網站根目錄的路徑及 PHP 程序名稱。
- $_SERVER['SCRIPT_NAME']:相對於網站根目錄的路徑及 PHP 程序文件名稱。
- $_SERVER['REQUEST_URI']:訪問此頁面所需的 URI 。
一個簡單的例子能夠看出它們的區別。URL 地址以下:html
http://www.ywp.com/php/index.php/test/foo?username=hbolive
- $_SERVER['PHP_SELF'] 獲得:/php/index.php/test/foo
- $_SERVER['SCRIPT_NAME'] 獲得:/php/index.php
- $_SERVER['REQUEST_URI'] 獲得:/php/index.php/test/foo?username=hbolive
從該例子能夠看出:ide
- $_SERVER['PHP_SELF'] 則反映的是 PHP 程序自己;
- $_SERVER['SCRIPT_NAME'] 反映的是程序文件自己(這在頁面須要指向本身時很是有用);
- $_SERVER['REQUEST_URI'] 則反映了完整 URL 地址(不包括主機名)。
其實從各自的命名上,也能夠體現出它們之間的細微差異。測試
特別的,對於以下地址:網站
http://www.ywp.com/
- $_SERVER['PHP_SELF'] 獲得:/index.php
- $_SERVER['SCRIPT_NAME'] 獲得:/index.php
- $_SERVER['REQUEST_URI'] 獲得:/
至於有人提到 $_SERVER['PHP_SELF'] 與 $_SERVER['SCRIPT_NAME'] 在 PHP 以 CGI 模式運行下會有區別。因爲 PHP 在 CGI 模式運行下並很少見,測試較爲麻煩,在此就再也不敘述了。若有這種狀況,可注意並自行測試。spa
但願在理解了它們之間的區別以後,以便選擇更適合本身程序的來使用。server