由于很多使用者在使用我的或其他程序員的CGI、PHP是把絕對(duì)路徑、相對(duì)路徑和URL的概念混淆,導(dǎo)致遇到許多不必要的麻煩,所以我決定寫此文為需要的朋友解惑。
通常我們?cè)诎惭b使用PHP和CGI時(shí)通常都會(huì)遇到“絕對(duì)路徑”和“相對(duì)路徑”這兩個(gè)概念,要熟練的操作計(jì)算機(jī)的目錄戶對(duì)于“絕對(duì)路徑”和“相對(duì)路徑”就應(yīng)該很熟悉才對(duì)。我想可能由于近幾年學(xué)習(xí)計(jì)算機(jī)的人都是使用在windows系統(tǒng),在管理文件時(shí)都是對(duì)“文件夾”(其實(shí)“文件夾”很多時(shí)候就是一個(gè)目錄)進(jìn)行操作,很少深入了解文件的目錄的概念以至遇到在WEB服務(wù)器上安裝程序時(shí)往往搞錯(cuò)。對(duì)于DOS和UNIX的用戶來說,目錄應(yīng)該是一個(gè)很熟悉的概念才對(duì)。
所謂“絕對(duì)路徑”就是從根目錄開始一直到該目錄的全程的路徑,這樣說可能太抽象,舉個(gè)例子:"c:\apache\htdocs\cgi-bin\test.cgi"就是文件test.cgi的絕對(duì)路徑。在UNIX下的一個(gè)例子是:
"/usr/local/apache/htdocs/cgi-bin/test.cgi"
所謂“相對(duì)路徑”就是相對(duì)于當(dāng)前目錄的路徑,舉個(gè)例子:例如當(dāng)前目錄目錄是 "c:\apache\htdocs\" 你要瀏覽 c:\apache\htdocs\cgi-bin\test.cgi文件的內(nèi)容,那么只需在命令行里輸入 "type cgi-bin\test.cgi" 就可以了,要是在"c:\apache\htdocs\cgi-bin\xyz\"下呢,那么就是 "type ..\test.cgi"。UNIX下“相對(duì)路徑”的概念也一樣,因?yàn)閣indows的目錄的概念就是從UNIX來的。
URL是英文資源定位的縮寫,例如 http://zjxyz.uhome.net/ 就是一個(gè)URL 但是URL的應(yīng)用范圍不止我們最常用的WEB服務(wù)器,它還可以定位其他的網(wǎng)上的資源,如FTP等。不過我們下面還是以 WEB 服務(wù)為例。
通常WEB服務(wù)器都會(huì)以計(jì)算機(jī)上某個(gè)目錄作為該網(wǎng)站的根目錄,例如一個(gè)安裝在UNIX系統(tǒng)/usr/local/apache/目錄下的apache服務(wù)器,網(wǎng)站默認(rèn)根目錄是 /usr/local/apache/htdocs/ ,我們可以用URL http://www.hostname.net/ 來訪問該目錄的下的文件,如果我們?cè)?"htdocs" 下建立一個(gè)xyz的子目錄,那么我們可以用 http://www.hostname.net/xyz/ 來訪問目錄 xyz 下的文件。有時(shí)我們會(huì)發(fā)現(xiàn) /usr/local/apache/cgi-bin/ 是這樣訪問的 http://www.hostname.net/cgi-bin/ 明明 cgi-bin 不在 htdocs 目錄下,為何又能這樣樣訪問呢?這是由于apache服務(wù)器的配置文件里有一句里有 ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" 把路徑重新定向了。