?
Solved

Suggestions: perl/cgi on apache:linux...problems running script from browser, works fine from command line

Posted on 2003-10-22
9
Medium Priority
?
288 Views
Last Modified: 2010-03-04
My setup is Apache, Linux, Perl.

I'm running RH9 with a new standard install of all required tools (perl, mysql, php, etc.)

the issue im having is trying to get the scripts to run from the browser...all i get is internal server error...i check the logs and most of the time all i see is premature end of headers. if i issue the command "perl anyscript.cgi" from the command line it works/generates desired html code. ive double checked permissions and syntax and am a stand still at this point.

does this sound like a httpd.conf issue?

fyi: the scripts do work, ive run them successfully on my sun box.

any suggestions?

thanks-neil
0
Comment
Question by:nriddock
9 Comments
 
LVL 3

Expert Comment

by:prady_21
ID: 9604913
premature end of headers- u get this error when there is information being passed to the browser before the headers are being passed

programs run on solaris successfully need not run successfully on linux
0
 
LVL 8

Expert Comment

by:heskyttberg
ID: 9605801
 print "Content-type: text/html\n\n";

On linux, make sure this is the first line in your perl scripts.
If shell script just translate print into echo.

Regards
/Hasse
0
 

Author Comment

by:nriddock
ID: 9606321
does the print command go before or after the #!/usr/bin/perl?
0
[Webinar] Improve your customer journey

A positive customer journey is important in attracting and retaining business. To improve this experience, you can use Google Maps APIs to increase checkout conversions, boost user engagement, and optimize order fulfillment. Learn how in this webinar presented by Dito.

 
LVL 2

Expert Comment

by:j_dyer
ID: 9607311
The print command goes after the #!... so, you use:

#!/usr/bin/perl

print "Content-type: text/html\n\n";  # Make sure you have to \n's here - very important!

### Rest of script here.
0
 

Author Comment

by:nriddock
ID: 9608023
tried that...it's still erroring out...any other suggestions?

does this sound like an apache issue (httpd.conf) or more of a script/syntax issue?

thanks
0
 
LVL 2

Accepted Solution

by:
j_dyer earned 2000 total points
ID: 9608165
I'd be inclined to get a bit more error reporting from the script.
Try:

#!/usr/bin/perl -w

use strict;

print "Content-type: text/html\n\n";
...

and see if any more errors appear.
Note, your script may generate loads of warnings when you run with strict enabled, if it's too
must to cope with, try without the strict, and just see what the -w flag gives you.

It sounds to me like a script problem, rather than an issue with your httpd conf (though you never
know for sure until it works...)
0
 
LVL 2

Expert Comment

by:j_dyer
ID: 9608209
just an afterthought...in my experience, there errors are normally caused quite early on in the execution
of a script, often by a require statement. It might be worthwhile just pasting the first few lines of the
script in question (say 20-30) - I might be able to spot something obvious straightaway.
0
 

Author Comment

by:nriddock
ID: 9609711
that did it...

#!/usr/bin/perl -w


the "-w" seemed to make all the difference. what exactly does the W do?

the use strict seemed to cause errors so i removed it. Thanks for all your help. Enjoy the extra points.

-Neil
0
 
LVL 2

Expert Comment

by:j_dyer
ID: 9612738
-w basically enables warnings, which makes troubleshooting perl problems *far* easier.
use strict makes perl 'paranoid' - things have to be 'right' for the script to execute without
generating errors ie:
$x = 10; # will give an error, since x has not been declared but...
my $x = 10; # will not give an error, since x has been declared

As the perl manpage says in the 'bugs' section - 'The -w switch is not mandatory'...you should
always use it when running perl.

Thanks for the extra points.
0

Featured Post

[Webinar] Improve your customer journey

A positive customer journey is important in attracting and retaining business. To improve this experience, you can use Google Maps APIs to increase checkout conversions, boost user engagement, and optimize order fulfillment. Learn how in this webinar presented by Dito.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

As Wikipedia explains 'robots.txt' as -- the robot exclusion standard, also known as the Robots Exclusion Protocol or robots.txt protocol, is a convention to prevent cooperating web spiders and other web robots from accessing all or part of a websit…
If you've heard about htaccess and it sounds like it does what you want, but you're not sure how it works... well, you're in the right place. Read on. Some Basics #1. It's a file and its filename is .htaccess (yes, with a dot in the front). #…
Kernel Data Recovery is a renowned Data Recovery solution provider which offers wide range of softwares for both enterprise and home users with its cost-effective solutions. Let's have a quick overview of the journey and data recovery tools range he…
Stellar Phoenix SQL Database Repair software easily fixes the suspect mode issue of SQL Server database. It is a simple process to bring the database from suspect mode to normal mode. Check out the video and fix the SQL database suspect mode problem.
Suggested Courses
Course of the Month5 days, 15 hours left to enroll

588 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question