为什么我的Perl CGI程序因“软件错误:......”而失败?

时间:2010-03-16 20:01:45

标签: perl cgi

当我尝试运行我的Perl CGI程序时,返回的网页告诉我:

  

软件错误:如需帮助,请发送邮件给网站管理员(root @ localhost),提供此错误消息以及错误的时间和日期。

以下是我在其中一个文件中的代码:


#!/usr/bin/perl

use lib "/home/ecoopr/ecoopr.com/CPAN";
use CGI;
use CGI::FormBuilder;
use CGI::Session;
use CGI::Carp (fatalsToBrowser);
use CGI::Session;
use HTML::Template;
use MIME::Base64 ();
use strict;

require "./db_lib.pl";
require "./config.pl";

my $query = CGI->new; 
my $url = $query->url();
my $hostname = $query->url(-base => 1);
my $login_url = $hostname . '/login.pl';
my $redir_url = $login_url . '?d=' . $url;
my $domain_name = get_domain_name();

my $helpful_msg = $query->param('m');
my $new_trusted_user_fname = $query->param('u');
my $action = $query->param('a');
$new_trusted_user_fname = MIME::Base64::decode($new_trusted_user_fname);

####### Colin: Added July 12, 2009 #######
my $view = $query->param('view');
my $offset = $query->param('offset');
####### Colin: Added July , 2009 #######

#print $session->header;
#print $new_trusted_user;

my $helpful_msg_txt = qq[];
my $helpful_msg_div = qq[];
if ($helpful_msg)

3 个答案:

答案 0 :(得分:6)

“请向网站管理员发送邮件”消息,您看到的是Web服务器在出现任何问题时无法处理的一般消息。解决实际问题并不是很有意思。检查错误日志以查找程序可能出现的相关错误输出。

并且,查看我发现问题的How do I troubleshoot my Perl CGI script?建议。

我的猜测是你的悬挂if()语法错误。您发布的内容不是有效的Perl程序。

祝你好运,

答案 1 :(得分:0)

是与suexec模块相关的东西

suExec的不正确配置会导致权限错误

suEXEC功能使Apache用户能够在不同于调用Web服务器的用户ID的用户ID下运行CGI和SSI程序。通常,当执行CGI或SSI程序时,它将作为运行Web服务器的同一用户运行。

apache建议您不要考虑使用suEXEC。 http://httpd.apache.org/docs/2.2/suexec.html

答案 2 :(得分:0)

从StackOverflow页面:How to trap program crashes with HTTP error code 500

我看到您的包括:使用CGI :: Carp(fatalsToBrowser);
...扼杀HTTP 500错误。只需删除此选项,即可使程序“正确”崩溃。