Jump to content

All Perl/CGI scripts return 500 Internal Server Error


saint

Recommended Posts

Hi I've got a little problem with all my perl/cgi scripts, basically doesn't matter what I put in my script it always ends up with 500 Internal Server Error.

My test script looks like this:

#!/usr/bin/perl
#
use CGI::Carp qw(fatalsToBrowser);
use CGI qw(:standard);

BEGIN {
my $homedir = ( getpwuid($>) )[7];
my @user_include;
foreach my $path (@INC) {
if ( -d $homedir . '/perl' . $path ) {
push @user_include, $homedir . '/perl' . $path;
}
}
unshift @INC, @user_include;
}

$|=1;            # Flush output immediately.

print header;
print "Hello, world!\n";

Run it here:

http://instalekt.heliohost.org/cgi-bin/t.pl

or

http://instalekt.heliohost.org/cgi-bin/t.cgi

 

File permissions are set to 755, and CGI perl modules are installed. File tested as both .pl and .cgi in cgi-bin direcotory.

I've run this script on my Apache+ActivePerl server and the it works just fine (without the BEGIN).

I've uploaded both files using Total Commander no change then through cPanel still the same.

The Error log in cPanel only shows:

[Tue Sep 22 11:56:59 2009] [error] [client *.*.*.*] File does not exist: /home/instalek/public_html/500.shtml

which doesn't have anything to do with my problem.

Can anyone help me, what am I doing wrong?

Link to comment
Share on other sites

This executes fine for me.

 

http://instalekt.heliohost.org/cgi-bin/t.cgi

 

Here's a script you can try.

 

http://byrondallas.heliohost.org/cgi-bin/time.txt

 

http://byrondallas.heliohost.org/cgi-bin/time.pl

 

 

 

 

 

You can try adding this to your script and see if it prints any errors.

 

# This is used for debugging. All errors are 
# written to errors.txt, if any.
BEGIN {
use CGI::Carp qw(carpout);
use diagnostics;
open(LOG, ">errors.txt");
carpout(LOG);
close(LOG);
}

 

 

Link to comment
Share on other sites

You are right t.cgi is working now, don't know why it didn't but when I download it change name and upload it doesn't work.

I've use your code +shebang, and permissions set to 755, and we're back to the beginning (error 500, and errors.txt wasn't created).

 

Ok now I have no idea what this is about, I've tried uploading t.cgi again with Total Commander and cPanel, editing it both with Notepad++ (utf8 + UNIX then WINDOWS) and with cPanel editor and nothing it's just broken, again.

Link to comment
Share on other sites

Sorry doesn't work for me:

the one with #comment >> http://instalekt.heliohost.org/cgi-bin/t3.cgi

no comment >> http://instalekt.heliohost.org/cgi-bin/t2.cgi

still no http://instalekt.heliohost.org/cgi-bin/errors.txt

 

I've used your test.txt saved it and rename

 

Update: looks like server needs some time before it can run new script, the t3.cgi started to produce an error and errors.txt file after about 5 minutes from the first run

 

Update2: I think the problem is character encoding if I use us-ansii for encoding it works, problem starts with uft-8 (and I need to use it since my scripts will contain special characters non-us)

Now I know I have to edit the code through cPanel editor and set utf-8 even thow the cgi file is save as utf-8, strange but it works

Link to comment
Share on other sites

I can see text files in cgi-bin just fine.

The problem was encoding as mentioned above, I'm using utf-8 the server is using us-ascii, anyway thanks for the help.

I've managed to make it work thanks to your errors.txt there were no special characters in this line so I knew there must be some kind of a encoding problem.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...