Solved

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

Posted on 2003-10-22
9
273 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
 
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
What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

 

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 500 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

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

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

Suggested Solutions

If you are running a LAMP infrastructure, this little code snippet is very helpful if you are serving lots of HTML, JavaScript and CSS-related information. The mod_deflate module, which is part of the Apache 2.2 application, provides the DEFLATE…
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). #…
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.
Hi friends,  in this video  I'll show you how new windows 10 user can learn the using of windows 10. Thank you.

910 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

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now