2012-05-31 58 views
2

我最近使用slackpkg更新我的Slackware13.37,現在firefox顯示我的perl.cgi腳本的內容而不是執行。 我使用:更新之前我的瀏覽器顯示我的perl.cgi腳本的內容而不是執行?

bash-4.2# httpd -v 
Server version: Apache/2.4.2 (Unix) Server built: May 24 2012 14:55:44 
bash-4.2# firefox -v 
Mozilla Firefox 12.0 
bash-4.2# perl -v 
This is perl 5, version 16, subversion 0 (v5.16.0) built for i486-linux-thread-multi 

腳本作品

#!/usr/bin/perl -w 

use strict; 
use warnings; 
use CGI; 
use DBI; 
use PDF::API2::Simple; 
use PDF::Table; 
use Data::Types qw(:all); 

my @param=(); 
############################### 
###   main   #### 
############################### 
my $q = new CGI; 
if(!defined $q->param('login')){ 
    if(!defined $q->param('query')){main::login_relogin('Welcome'); 
    }else{ 
    my ($fname,$lname,$sec,$w,$h) = main::read_cookie(); 
    if(defined $sec){ 
     main::home($fname,$lname,$sec,$w,$h,$q->param('query'),$q->param('param1'),$q->param('param2')); 
    }else{main::login_relogin('Your session expired !!!');} 
    } 
etc... etc... 

請幫助

+1

offtopic:投票搬到webmasters.SE – daxim

回答

3

我在Apache 2.4.2中遇到了同樣的問題。

問題解決:mod_cgi.so默認不會在我的系統上生成(openSUSE 12.1)。當我構建Apache 2.2時,CGI是核心的一部分,而不是2.4中的動態模塊。所以在運行configure時,需要添加--enable-cgi。另外,在httpd.conf中取消註釋「LoadModule dir_module modules/mod_cgi.so」

或者,使用mod_cgid.so,它構建在我的系統上。每http://httpd.apache.org/docs/current/mod/mod_cgi.html

「當使用在UNIX下一個多線程MPM,模塊mod_cgid應代替該模塊的使用。在用戶層面,這兩個模塊基本上相同」

所以,取消「的LoadModule dir_module modules/mod_cgid.so「在httpd.conf中。在httpd.conf中(在指令中)取消註釋「Scriptsock logs/cgisock」。

2

基本上,你需要告訴Apache該文件是需要運行的腳本。

我需要這麼做已經很長時間了,但除非事情發生了很大變化,否則只需更新httpd.conf文件,可能是將cgi-bin文件夾標記爲cgi-bin文件夾。看起來升級沒有自動完成。

+0

在/etc/httpd/httpd.conf我發現這行: 「的ScriptAlias/cgi-bin目錄/的/ srv/HTTPS/cgi-bin目錄」 –

+0

另一種可能性是,該文件未設置爲可執行文件。假設你已經正確安裝了'mod_cgi',ScriptAlias應該爲你做些事情(http://httpd.apache.org/docs/2.2/mod/mod_alias.html#scriptalias,但是不要注意文件夾是否已經可以訪問來自網絡)。 –

相關問題