CGI 程式無法運作了,應該如何的除錯呢?

在這裡將會描述許多的共同的原因,注意的是,每一個 Web 伺服器都不大一 樣;每個使用者的使用方式可能都不大一樣。個別來說, Windows 與麥金塔 電腦的伺服器與 Unix 伺服器就完全的不一樣。先看看您的伺服器的文件可能 會對你有許多的幫助。
伺服器必須要認得您的程式
利用您的資訊頁來鏈結 CGI 程式,否則程式將不會由伺服器來執行。 而 CGI 程式的特色有兩個﹕在某個由伺服器管理員所特別指定的目錄 下存放的檔案才是 CGI 的程式檔案,另一種是具有特別的附屬檔名的 檔案(通常是 .cgi)。

您所使用的伺服器只可能被組態成這兩種情形。大部分的站並不允許 使用者執行自己的 CGI 程式。先和您的 Web 伺服器管理員連絡看 看

輸出多媒體 (MIME)格式 Always Output a MIME Type
每一個 CGI 程式都必須要輸出一個多媒體格式(MIME type) ,以表示它所產生的文件的種類。如果 CGI 程式的輸出是 HTML 資訊頁,那麼正確的格式應該是:

Content-type: text/html

同時並接著兩行的空白(ASCII 碼為 10)

在輸出 MIME 格式之後,就可以輸出想要的 HTML 語法了。

保持直接輸出的方式
許多的系統中,當一個 CGI 程式輸出多媒體 MIME 格式以後,很可能 導致無法預期的問題產生,接著又馬上執行另一個程式來產生其它 的文件。想要避免這樣的問題,在執行其他程式之前,直接將程式的 結果輸出將是比較明智的做法。 如果您的程式是利用 C 語言所完成的,那麼常被使用到的碼是: fflush(stdout);
權限與路徑:為什麼程式找不到需要的檔案?
CGI 程式很典型的在某個目錄下並且使用某個特定的使用者身分來執行 ,而這個目錄與身分將不會與使用者所使用的相同。當你寫 CGI 程式的 時候,必須要確定所有被用到的檔案都是以絕對路徑的方式存在您的程 式之中(也就使由根目錄 / 算起)。此外,多使用者的系統上(像是 Unix)也許必須要使用 chmod 指令來讓所有的使用者有閱讀的權限,甚 至可能要有寫入資料檔案的權限。 這並不是一個理想的解決方式。最好的方式是伺服器以您的使用者身分 來執行您的 CGI 程式,如果在這方面有問題的話,您應該與您的伺服器 管理者做一個溝通才是。
某一個瀏覽器可以執行,另一個卻不可以的時候
有些瀏覽器是可以忍受不同的 Content-type 格式的,就像是在 text/html 欄位上空白或是使用 text/plain 來當作輸出等等。請您確定您的輸出是 完全正確;它對於檢查程式在 Netscape,Mosaic,Lynx 等瀏覽器上的結 果將會有很大的幫助。

World Wide Web FAQ