【问题标题】:Why does my Perl CGI script cause a 500 internal server error?为什么我的 Perl CGI 脚本会导致 500 内部服务器错误?
【发布时间】:2010-05-20 08:19:59
【问题描述】:

当我尝试在支持 perl 的 Web 服务器中运行以下代码时,出现 500 内部服务器错误:

#! /usr/bin/perl

use LWP;

my $ua = LWP::UserAgent->new;
$ua->agent("TestApp/0.1 ");
$ua->env_proxy();

my $req = HTTP::Request->new(POST => 'http://www.google.com/loc/json');

$req->content_type('application/jsonrequest');
$req->content('{ "cell_towers": [{"location_area_code": "55000", "mobile_network_code": "95", "cell_id": "20491", "mobile_country_code": "404"}], "version": "1.1.0", "request_address": "true"}');

my $res = $ua->request($req);
if ($res->is_success) {
print $res->content,"\n";
} else {
print $res->status_line, "\n";
return undef;
}

但是当我运行下面的代码时没有错误:

#! /usr/bin/perl

use CGI::Carp qw(fatalsToBrowser);


print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD><TITLE>Hello World!</TITLE></HEAD>\n";
print "<BODY>\n";
print "<H2>Hello World!</H2> <br /> \n";

foreach $key (sort keys(%ENV)) {
print "$key = $ENV{$key}<p>" ;
}
print "</BODY>\n";
print "</HTML>\n";

所以我认为我的代码有问题。当我在本地机器上使用 -wc 命令运行第一个 perl 脚本时,它说语法没问题。请帮帮我。

【问题讨论】:

  • 当您遇到 Perl CGI 脚本问题时,请查看我的“Perl CGI 脚本疑难解答”:stackoverflow.com/questions/2165022/…
  • 我不知道这是否有帮助,但在我输入 shebang line #!C:\Strawberry\perl\bin\perl 后,我的 perl-cgi 脚本工作了

标签: perl cgi


【解决方案1】:

我假设您将第一个脚本作为 CGI 脚本运行?您需要包含内容类型:

print "Content-type: text/plain\n\n";

在任何其他输出之前(当然,将text/plain 更改为text/html 或任何合适的!)

【讨论】:

    【解决方案2】:

    使用您在其他脚本中使用的内容。

    print "Content-type: text/html\n\n";
    print "<HTML>\n";
    

    另外,看看CGI Programming 编写一个健康的脚本。

    【讨论】:

      【解决方案3】:

      如果您看到的只是“500 服务器错误”页面,即使使用 use CGI::Carp qw(FatalsToBrowser),那么 Web 服务器也无法启动您的 Perl 程序 - 它位于错误的位置,perl 不在 @ 987654323@,该目录没有启用cgi执行,或其他。

      当您收到 500 错误时,一般规则是查看 Web 服务器的错误日志以了解实际的错误消息是什么。

      编辑:只需重新阅读问题并意识到我正在查看“工作”代码而不是“不工作”代码。这改变了潜在问题点的列表,并且 any CGI 可执行文件 must 返回内容类型(即使它没有返回任何其他内容)的早期答案可能是导致问题,但我原来的带回家的消息不受影响:“500 Internal Server Error”表示“检查服务器错误日志”。

      【讨论】:

        【解决方案4】:

        500 内部服务器错误

        可能是权限不正确造成的:尝试CHMOD 755到你要执行的文件/文件夹..

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-30
          • 2012-12-13
          • 2017-07-31
          相关资源
          最近更新 更多