Hello all! I have spent HOURS trying to fgure this one out! I have just rebuilt my Apache server, and I made a number of changes (remove FrontPage support, add mod_ssl, get mod_perl working, etc) I have clean compile and builds for everything. To test the mod_perl aspect of my server, I have 2 test scripts, (I got them off the 'Web) which are functionally identical, but one tests the API, and the other the CGI. The problem I have is that the test for the CGI does not render (not even a blank page), but the test for the API works PERFECTLY! I am about ready BEAT the machine! I *know* it is something stupid, but I'm stumped a to what it could be!

 My /perl-status looks like:
Embedded Perl version v5.8.4 for Apache/1.3.17 (Unix) mod_ssl/2.8.0 OpenSSL/0.9.6m PHP/4.3.10 mod_perl/1.25 process 27940,
running since Fri Jul 14 11:02:13 2006
PerlRequire'd Files
Perl Configuration
Compiled Registry Scripts
Environment
ISA Tree
Symbol Table Dump
Loaded Modules
Enabled mod_perl Hooks
Inheritance Tree
Signal Handlers
Which according to all the documentation I can find looks good. I have a test script, in 2 flavors
mod_perl API:
my $r = shift;
$r->send_http_header('text/plain');
$r->print("mod_perl (2) rules!\n");

and mod_perl CGI:
#!/usr/bin/perl
print "Content-type: text/plain\r\n\r\n";
print "mod_perl (1) rules!\n";
exit
which are functionally identical. I have both a /perl/ directory and a /cgi-bin/ directory. both of the above scripts are in /perl/, and a copy of the CGI one is in /cgi-bin/. When I type in URL "/perl/mod_perl2.pl" (the API flavor) it renders:
mod_perl (2) rules!
When I type in URL "/perl/mod_perl1.pl" (the CGI flavor) it does not render, and the screen stays the same. (I have brought up other web pages, and then re-entered the CGI flavor URL, and the page does not change.) The Apache access log shows it requesting the respective pages, and there are no entries in the error log.

When I type in URL "/cgi-bin/mod_perl1.pl" (the copy of the CGI flavor in the /cgi-bin/ directory) it renders perfectly!

To verify that the CGI flavor was REALLY being loaded from the /perl/ directory, I purposely put in an invalid statement in it, and when I entered the URL, I got an Apache Error 500, and the erroneous line appeared in the error log, so I *know* it's reading and processing the Perl CGI file - it's just not RENDERING (in the HTML sense)!!

I have found reports in the internet of the mod_perl CGI working and the mod_perl API not working, but not the other way around!!

Here is the relevent sections of my httpd.conf (obviously, since the API is working, the AddModule and stuff before this was done):
#
# Enable Embedded Perl (in HTML).
#
<Files *.epl>
  SetHandler   perl-script
  PerlHandler  Embperl
  Options      ExecCGI
</Files>

#
# Enable mod_perl (in HTML).
#
#Alias          /perl/ /usr/local/apache/perl/
#PerlRequire    /usr/local/apache/perl/startup.pl
PerlModule              Apache::Registry
##PerlModule            Apache::PerlRun
<Location /perl/>
  SetHandler           perl-script
  PerlHandler          Apache::Registry
##   PerlHandler                Apache::PerlRun
  Options              +ExecCGI
  Allow from all
  PerlSendHeader       On
</Location>
# Compile the scripts in /modperl/ once for each Apache child process
# and store it in memory.
#<Location /modperl/>
#   SetHandler          perl-script
##   PerlResponseHandler        Modperl::Registry
##   PerlOptions                +ParseHeaders
#   Options             +ExecCGI
#</Location>
PerlModule              Apache::Status
<Location /perl-status>
  SetHandler           perl-script
  PerlHandler          Apache::Status
#   PerlHandler         Apache::Embperl
</Location>
PerlFreshRestart On
PerlWarn On
PerlTaintCheck On
#PerlSetEnv SomeKey SomeData
PerlPassEnv PERL5LIB TERM EDITOR NOCHANCE USER

I give up! I'm stumped!! Anyone out there have either a solution or an idea what's going on?

Thanks in advance for any help.

Christine.



Reply via email to