2014-09-01 49 views
1

我有簡單的腳本。我已經在命令行中對它進行了測試。一切安好。 但我的瀏覽器無法執行它。它總是試圖下載它。我欺騙了所有的Apache配置文件,但我找不到任何麻煩。即使我的瀏覽器嘗試下載它,如何執行.pl腳本?

/etc/apache2/sites-available looks like this: 

ScriptAlias /cgi-bin/ /var/www/president/cgi 
<Directory "/cgi-bin/ /var/www/president/cgi"> 
AddHandler cgi-script cgi pl 
AllowOverride None 
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 

腳本非常簡單

#!/usr/bin/perl -w 
use CGI; 
print "Content-type: text/html\n\n"; 
foreach (sort keys %ENV) { 
print "<i>$_</i>: $ENV{$_}<br/>\n"; 
} 
+4

「我的瀏覽器無法執行它」顯示了CGI(以及一般的服務器端腳本)如何工作的根本誤解。您的瀏覽器*不應該*執行腳本。你的瀏覽器永遠不應該*看*腳本。相反,Web服務器(在你的情況下,顯然是Apache)應該執行腳本,並將*腳本的輸出*(在本例中是一些普通的舊HTML)發送到瀏覽器。您的瀏覽器只能看到HTML。 – tobyink 2014-09-01 11:13:38

+1

您正在加載CGI.pm,但沒有使用它。這似乎...次優: -/ – 2014-09-01 12:11:44

回答

5

您應該:

  1. 檢查路徑的Perl
  2. 檢查的家當,如#!/path/perl
  3. chmod 755 /var/www/president/cgi/myscriptname.pl
  4. 檢查您的error_log! ;)

,但可能的問題是

AddHandler cgi-script cgi pl 

這應該是

AddHandler cgi-script .cgi .pl 
        ^^dots here 

您也有一個錯誤<directory...規格..

的部分:

<Directory "/var/www/president/cgi"> 
AddHandler cgi-script .cgi .pl 

和/或檢查線路如:

LoadModule cgi_module lib/apache2/modules/mod_cgi.so 

PS:無關的,但仍然是一個很好的建議,請閱讀一些關於Plack & PSGI。可以加快你的perl-web-app開發多次(真的很多次)。 (你可以生活沒有這樣的問題):)

+0

1. whereis perl給了我正確的路徑,所以你可以肯定,我做對了 2.沒有-w鍵的shebang沒有改變任何事情 3.訪問權是第一件事,我總是檢查,並相信我,我超級肯定它(是的,我再次檢查它) 4.這是不好的,但這個點不會改變任何東西( – Tregnas 2014-09-01 10:55:27

+0

我的意思是說,我改變了shebang,但它並沒有幫助 而且我也爲我的腳本做了'chmod + x' – Tregnas 2014-09-01 11:02:03

+0

你說得對目錄說明!謝謝! – Tregnas 2014-09-01 11:08:16

相關問題