2011-02-22 18 views
5

我的Ubuntu執行一個文件名爲.cgi在Ubuntu

下運行的Apache/PHP當我運行的CGI文件,通過在http://localhost/mycgi.cgi去,瀏覽器將顯示運行它的代碼來代替。

如何讓瀏覽器執行CGI文件而不是顯示其內容?

+2

投票遷移到http://askubuntu.com/ – daxim 2011-02-22 21:09:35

+2

@daxim:我不認爲這真的是一個Ubuntu的具體問題。問題在這裏找到正確。 – eckes 2011-02-22 21:40:51

回答

2

顯然,CGI執行不正確。你嘗試過tutorial嗎?

通常,將所有CGI腳本放入某個位置,例如cgi-bin。只有該文件夾中存在的文件纔會被執行。否則,它們被視爲正常文件,Web服務器只是將它們作爲源返回。

tutorial向您展示了可用於使腳本執行的替代方法,而不僅僅是作爲文本文件返回。

+0

我確實在usr/www/mywww/cgi-bin 中創建了一個cgi-bin,那你的意思是? 如果不是我應該放在哪裏? – X10nD 2011-02-22 19:55:52

1

確保.cgi或.pl文件中的shebang行是正確的。 shebang行告訴Apache Perl解釋器在哪裏(Perl解釋器是perl.exe文件)。

阿帕奇教程說:

以下

你的第一個CGI程序就是一個例子CGI程序中打印一行到瀏覽器。輸入以下內容,將其保存到名爲first.pl的文件中,並將其放入cgi-bin目錄中。 #!/ usr/bin/perl print「Content-type:text/html \ n \ n」; print「你好,世界。」;

所以這裏的家當線#!/usr/bin/perl

然而,如果perl.exe所在位於不同的文件夾,然後需要#!/usr/bin/perl改變!即使對於通常可以完全忽略並忽略shebang行的Windows用戶也是如此。 (爲什麼教程中沒有提到這個事實,我不知道 - 我猜他們沒有意識到有人總是忽略了shebang行嗎?)

例如,當我安裝Perl時,它自動被提示我在C:\Program Files (x86)\Perl64 安裝Perl裏面我Perl64文件夾名爲「bin文件夾和裏面那就是perl.exe所在

,所以我不得不shebang行更改爲:#!C:/Program Files (x86)/Perl64/bin/perl.exe 之前我能得到CGI腳本與Apache工作。

13

這些行添加到您的apache2.conf文件

<Directory /usr/local/apache2/htdocs/somedir> 
    Options +ExecCGI 
</Directory> 

AddHandler cgi-script .cgi .pl 
0

這大感迷惑我在亞馬遜上的Ubuntu 14.04。我有一個構造了幾年「工作」:排序這一點與擴展名爲.cgi一些現有的Perl腳本和現有的虛擬主機配置

sudo a2enmod cgi 
sudo service apache2 restart 

。也有錯[沒有這個問題,但與此相關的升級】:

virtual.host 

成爲

virtual.host.conf 

需要之前被確認爲有效。