2

最近、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...

plsヘルプ

4

2 に答える 2

3

Apache2.4.2でも同じ問題が発生していました。

問題が解決しました:mod_cgi.soが私のシステム(openSUSE 12.1)でデフォルトでビルドされません。Apache 2.2をビルドしたとき、CGIはコアの一部であり、2.4のような動的モジュールではありませんでした。したがって、configureを実行するときは、-enable-cgiを追加する必要があります。また、httpd.confの「LoadModuledir_modulemodules/mod_cgi.so」のコメントを解除します

または、私のシステムでビルドされたmod_cgid.soを使用します。http://httpd.apache.org/docs/current/mod/mod_cgi.htmlごと

「UNIXでマルチスレッドMPMを使用する場合は、このモジュールの代わりにモジュールmod_cgidを使用する必要があります。ユーザーレベルでは、2つのモジュールは基本的に同一です。」

したがって、httpd.confの「LoadModuledir_modulemodules/mod_cgid.so」のコメントを解除します。また、httpd.conf(ディレクティブ内)の「Scriptsocklogs/cgisock」のコメントを解除します。

于 2012-06-11T15:06:20.950 に答える
2

基本的に、ファイルが実行する必要のあるスクリプトであることをApacheに通知する必要があります。

私がそれをする必要があったのは久しぶりですが、物事が劇的に変化しない限り、おそらくあなたのフォルダをフォルダとしてhttpd.confマークすることによって、あなたは単にあなたのファイルを更新する必要があります。アップグレードではそれが自動的に行われなかったようです。cgi-bincgi-bin

于 2012-05-31T14:26:18.250 に答える