2010-05-20 109 views
3

我得到一个500内部服务器错误,当我尝试在支持Perl的Web服务器运行,下面的代码:为什么我的Perl CGI脚本会导致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脚本时,它表示语法正常。请帮帮我。

+1

当你有一个Perl CGI脚本的麻烦,经过我的“Perl Perl CGI脚本故障排除”:http://stackoverflow.com/questions/2165022/how-can-i-troubleshoot-my-perl-cgi-script – 2010-05-21 00:26:24

+0

我不知道这是否有帮助,但我得到了我的perl- cgi脚本工作后我把shebang行'#!C:\ Strawberry \ perl \ bin \ perl' – 2012-03-11 14:42:01

回答

4

我假设你将第一个脚本作为CGI脚本运行?您需要包含内容类型:(!改变text/plaintext/html或者任何恰当,当然)

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

其他任何输出前

+0

它为我工作。谢谢 – Nitish 2010-05-20 13:08:48

0

使用你正在使用其他脚本什么。

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

而且,看看CGI Programming写一个健康的脚本。

+0

Why -ve?这对我有用.. – Space 2010-05-20 09:20:49

+0

他很着急我想:) – Space 2010-05-20 10:14:33

+0

它为我工作。谢谢 – Nitish 2010-05-20 13:08:19

0

如果所有你看到的是“500服务器错误”页,即使use CGI::Carp qw(FatalsToBrowser),然后Web服务器无法启动你的Perl程序 - 这是在错误的地方,perl不是在/usr/bin/perl,目录没有启用cgi执行,或者其他什么。

当出现500错误时,一般的规则是查看Web服务器的错误日志以查看实际的错误消息。

编辑:只是重新阅读问题,并意识到我在看“工作”代码而不是“不工作”的代码。这改变了潜在的问题点的名单,和刚才的答复是任何 CGI可执行必须返回的内容类型(即使它返回没有别的)是问题的一个可能的原因,但我原来带回家的消息不受影响:“500内部服务器错误”表示“检查服务器错误日志”。

0

500内部服务器错误

可以由不正确的权限引起的:尽量CHMOD 755到要执行的文件/文件夹..

相关问题