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

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
nriddockAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

prady_21Commented:
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
heskyttbergCommented:
 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
nriddockAuthor Commented:
does the print command go before or after the #!/usr/bin/perl?
IT Pros Agree: AI and Machine Learning Key

We’d all like to think our company’s data is well protected, but when you ask IT professionals they admit the data probably is not as safe as it could be.

j_dyerCommented:
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.
nriddockAuthor Commented:
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
j_dyerCommented:
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...)

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
j_dyerCommented:
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.
nriddockAuthor Commented:
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
j_dyerCommented:
-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.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Apache Web Server

From novice to tech pro — start learning today.