【问题标题】:Why does my Perl CGI program fail with "Software error: ..."?为什么我的 Perl CGI 程序失败并显示“软件错误:...”?
【发布时间】:2010-03-16 20:01:44
【问题描述】:

当我尝试运行我的 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)

【问题讨论】:

  • 这是你的全部剧本吗?最后一条语句会给你一个语法错误。
  • 另请参阅如何对我的 Perl CGI 脚本进行故障排除stackoverflow.com/questions/2165022/…
  • 阅读jdporter.perlmonk.org/cgi_course - Ovid 的 CGI 课程
  • 不,这是我的整个脚本..我可以看到页面加载正确,但我在标题顶部收到此错误消息

标签: perl cgi


【解决方案1】:

您看到的“请向网站管理员发送邮件”消息是一条通用消息,当出现任何问题且无人处理时,Web 服务器会向您发送该消息。就解决实际问题而言,它一点也不有趣。检查错误日志以查找程序中可能的相关错误输出。

并且,请通过我的How do I troubleshoot my Perl CGI script? 建议来查找问题。

我的猜测是你对那个悬空的if() 有语法错误。您发布的不是有效的 Perl 程序。

祝你好运,

【讨论】:

    【解决方案2】:

    是不是和 suexec 模块有关的东西

    suExec配置不当会导致权限错误

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

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

    【讨论】:

      【解决方案3】:

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

      我看到您的包含:使用 CGI::Carp (fatalsToBrowser);
      ... 扼杀了 HTTP 500 错误。只需删除它,程序就会“正常”崩溃。

      【讨论】:

        猜你喜欢
        • 2011-01-11
        • 2012-08-04
        • 2021-05-08
        • 2011-02-14
        • 1970-01-01
        • 1970-01-01
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多