2011-09-19 150 views
1

我有一個perl.cgi文件,該文件具有內容:CGI腳本不執行

#!/usr/bin/perl 
print "Content-type: text/html\n\n"; 
print "<h1>Hello World</h1>\n"; 

我做到了可執行文件。 (chmod a+x perl.cgi

然後我在同一個目錄下創建了一個新文件perl.htm。當我在瀏覽器中運行的perl.htm

Content-type: text/html 
<p><a href="perl.cgi">RUN perl.cgi</a></p> 

然後我得到的輸出:它具有以下數據

Content-type: text/html 
RUN perl.cgi 

當我點擊RUN perl.cgi另一個頁面打開,有輸出爲:

#!/usr/bin/perl 
print "Content-type: text/html\n\n"; 
print "<h1>Hello World</h1>\n"; 

perl.cgi未執行。只顯示文件內容。

編輯:從答案和評論我來了解,我將不得不配置我的Web服務器(Apache)運行CGI腳本。我怎樣才能做到這一點?讓我知道。

+0

您需要更詳細地描述您的Web服務器設置。 –

+1

投票移動到http://serverfault.com但嘗試將文件重命名爲'perl.pl'。如果不是這樣,你需要正確地配置你的web服務器來執行perl cgi –

回答

9

聽起來像Apache不配置爲運行* .cgi文件:

AddHandler cgi-script cgi pl 
<Directory /path/to/cgi/files> 
    Options +ExecCGI 
</Directory> 
+0

done,仍然有相同的問題 –

+0

btw在末尾使用。 –

+0

你說得對,修好了。 –

0

你需要設置你的web服務器,使其在執行一個* .cgi文件(或者更通常情況下,所有的文件特定的目錄),而不僅僅是將它們傳送到瀏覽器,因爲它會處理.html文件。

這是如何完成取決於您的服務器。

+0

我使用的是Apache。我怎樣才能配置它能夠運行CGI? –

+0

請參閱@Gabriel的答案,或者在部分添加ScriptAliasMatch ^/cgi-bin(。*)「/ full/path/to/cgi/directory/$ 1」 – blankabout

4

確保您加載的CGI模塊中的httpd.conf文件:

LoadModule cgi_module modules/mod_cgi.soLoadModule cgi_module modules/mod_cgid.so這取決於Apache的版本號,你正在運行。

您還可以閱讀關於 Dynamic Content with CGI的其他解決方案。