我的浏览器显示我的perl.cgi脚本的内容而不是执行?

时间:2012-05-31 14:17:55

标签: perl apache firefox slackware

我最近使用slackpkg更新我的Slackware13.37,现在firefox显示我的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...

请帮助

2 个答案:

答案 0 :(得分: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代替此模块。在用户级别,这两个模块基本相同”

因此,在httpd.conf中取消注释“LoadModule dir_module modules / mod_cgid.so”。同样取消注释httpd.conf中的“Scriptsock logs / cgisock”(在指令中)。

答案 1 :(得分:2)

基本上,您需要告诉Apache该文件是需要运行的脚本。

我需要这么做很长一段时间,但除非事情发生剧烈变化,否则您只需更新httpd.conf文件,可能是将cgi-bin文件夹标记为{{1}文件夹。看起来升级没有自动完成。