top
Loading...
設置IIS以使用CGI
在IIS上運行CGI有十個簡單的步驟:

1)安裝Internet Service Manager。
2)從列表中選擇WWW Servive。
3)選擇Properties/Service Properties命令。
4)單擊Directories標簽。
5)單擊Add按鈕。
6)指定自己的cgi-bin目錄的完整路徑(例如,c:webfilesscripts)。
7)使用/scripts作為目錄別名。
8)選中Execute檢查框。
9)單擊OK保存修改。
10)將自己的CGI程序放在c:webfilesscripts中并在HTML中作為/scripts/someprogram.exe引用。
在使用IIS時經常出現的問題與設置IIS沒太大關系而是和基本的操作系統功能有很大關系。IIS與底層的操作系統聯系很緊密,即使已經設置為服務,Web服務器基本上是作為應用程序來運行的,通常只有一個用戶安全環境,Web服務器能訪問到的與Web服務器下的CGI程序能訪問到的內容幾乎沒什么不同(這類似于UNIX環境,在UNIX環境下,很重要的一點就是不要將Web服務器作為root來運行)。IIS的工作很像一個擴展的文件系統。每個用戶有自己的權限。CGI程序在執行該程序的訪問者的用戶安全環境中運行。對于未驗證的頁面,這就是缺省提供的“無名的”用戶,而對驗證的頁面,安全環境就像用戶位于服務器控制臺前手工運行該程序一樣。使大部分初學者犯錯誤的正是這種額外的安全層次。

IIS管理員最常抱怨的一個錯誤信息是"The Application misbehaved by not returning a complete set of headers"。錯誤消息接下來列出服務器接收到的頭標--一般是個空的清單。這種討厭的不明確的錯誤有一個直接的原因,不過這個原因與CGI腳本的錯誤操作沒有一點關系。如果因為某種原因某個CGI腳本不能運行,它就不能產生任何頭標。IIS將錯誤的責任推在腳本身上,實際上卻幾乎總是服務器管理員的錯。CGI腳本需要訪問系統DLLs、系統的臨時目錄以及它們使用的任何其他資源。如果該腳本是按靜態約束進行編譯的,那么除非所有組件均可用,否則操作系統不會裝載該程序的。如果系統管理員鎖緊了安全級使得腳本不能裝載它的DLLs,那么腳本就不能運行。當腳本不能運行時,它也就不產生任何頭標了(或者其他的輸入),從而導致出現本段開頭引用的錯誤消息。

如果管理員是在一個安全目錄中運行腳本的(安全目錄即是一個需要單獨用戶驗證才能訪問的目錄),那么每個可能訪問系統的用戶都必須有下列安全權限。如果是無名地運行腳本,那么只有無名用戶需要這些權限:

.對%systemroot%system(一般為c:winntsystem)的讀權限
.對%systemroot%system32(一般為c:winntsystem32)的讀權限
.對臨時目錄(一般為c:temp)的修改權限
.對Web根的讀權限
.對CGI目錄的修改權限
如果在有了這些訪問權限之后仍然出問題,可以進一步臨時給特殊的用戶帳號Everyone賦予這些目錄的修改權限。如果問題解決了,就可以認定是少了一個步驟(或一個用戶)。糾正問題然后慢慢回收權限直至服務器重新安全。 
北斗有巢氏 有巢氏北斗