絕對路徑與相對路徑祥解 - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 絕對路徑與相對路徑祥解 (http://www.webasp.net/article/8/7763.htm) |
| -- 作者:未知 -- 發佈日期: 2003-09-13 |
| 新手在安裝 Perl 程序的時候,對這絕對路徑和相對路徑常常搞不清楚,不知道如何設置。希望看完本文後,能讓你們對此不再糊塗。 1. 什麼是絕對路徑 ?什麼是絕對路徑的相對表示? 絕對路徑就是你的主頁上的文件或目錄在硬盤上真正的路徑,比如,你的 Perl 程序是存放在 c:/apache/cgi-bin 下的,那麼 c:/apache/cgi-bin 就是 CGI-BIN 目錄的絕對路徑(如果你不清楚目錄的絕對路徑,可以問你主頁提供商,也可以用最後的程序自己來檢測)。 絕對路徑的相對表示其實很好理解,假設你的 Perl 程序是放在 c:/apache/cgi-bin 下的,如果你要表示這個目錄的絕對路徑,除了上面說的 c:/apache/cgi-bin 外,你還可以用 . 來表示,因為你的程序就在當前目錄下的。其實這個問題和 DOS 下的 CD 命令類似的,你如果在 c:windowssystem 目錄下,現在要轉換到 c:windows 下,那麼你可以用絕對路徑命令:cd c:windows,也可以用絕對路徑的相對表示命令:cd ..,你現在理解了嗎? 要注意的是,如果你用的是 PWS 或 IIS WEB 服務器,那麼路徑必須用絕對路徑來表示,而不能用絕對路徑的相對表示,千萬要注意了! 2. 什麼是相對路徑?什麼是 URL 相對路徑? 這兩種說法實際上表達的意思是一樣的。比如,你的 Perl 程序 URL 是 http://www.CGIer.net/cgi-bin/test.cgi,調用圖片 URL 是 http://www.CGIer.net/gif/test.gif,如果你要在你的程序中表示此圖片的相對路徑,那麼可以寫成 http://www.CGIer.net/gif/test.gif,或者是 /gif/test.gif 。說白了,相對路徑其實就可以理解為 URL。 3. 絕對路徑如何檢測? 運行如下子程序,返回變量 $mypath 的值就是此 Perl 程序當前所在目錄的絕對路徑。 sub mypath { local $temp; $temp=__FILE__; $temp=~ s/\///g if ($temp=~/\/); if ($temp) { $mypath=substr($temp,0,rindex($temp,"/")); } else { $mypath=substr($ENV{'PATH_TRANSLATED'},0,rindex($ENV{'PATH_TRANSLATED'},"\")); $mypath=~ s/\///g; } return $mypath; } 4. 相對路徑如何檢測? 運行如下子程序,返回變量 $myurl 的值就是此 Perl 程序當前所在目錄的相對路徑。 sub myurl { local $server_port,$fullurl; $server_port = ":$ENV{'SERVER_PORT'}" if ($ENV{'SERVER_PORT'} ne '80'); $fullurl = "http://$ENV{'SERVER_NAME'}$server_port$ENV{'SCRIPT_NAME'}"; $myurl = substr($fullurl,0,rindex($fullurl,"/")); return $myurl; } |
| webasp.net |