2010-05-20 107 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到要執行的文件/文件夾..

相關問題