Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does my Perl CGI script cause a 500 internal server error?

Tags:

cgi

perl

I get a 500 internal server error when I try to run the code below in a web server which supports perl:

#! /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;
}

But there is no error when I run the code below:

#! /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";

So I think there is some problem with my code. When I run the first perl script in my local machine with the -wc command, it says that the syntax is OK. Help me please.

like image 656
Nitish Avatar asked Apr 10 '26 05:04

Nitish


1 Answers

I assume you're running the first script as a CGI script? You need to include the content type:

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

before any other output (change text/plain to text/html or whatever is appropriate, of course!)

like image 130
psmears Avatar answered Apr 12 '26 20:04

psmears



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!