February 29th, 2000, 06:56 AM
I am trying to run perl scripts under apache 1.3 on windows98, that I have installed for local testing of scripts etc. Apache appears to be configured ok and is running the web pages ok. However when I invoke a perl scripts the output is not coming out in the browser in HTML format, instead it appears in a ms-dos window, just as if I had run it from a command line.
I am trying a very simple hello world type program as follows:
print "Content-type:text/html", "nn";
print "hello world";
I can only imagine that I have something wrong in the httpd.conf file, but can't see anything obvious.
Any help is much appreciated.
March 1st, 2000, 04:29 PM
According to ActiveState's ActivePerl documentation:
How do I use Perl for Win32 under Apache?
NOTE: mod_perl currently only works when Perl is built without PERL_OBJECT support on win32. Since ActivePerl is built under the PERL_OBJECT regime, mod_perl users will need to build Perl from the sources.
If you want to put all of your CGI scripts into one directory, add the following line to your srm.conf file (You can choose any directory you'd like, but make sure it exists):
ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache/cgi-bin/"
After you have made this change, stop and restart the Apache service.
Apache provides an emulation of the UNIX shebang (#!/path/to/perl) syntax, so the next step is easy. You can put you Perl scripts into your cgi-bin directory, as long as you have a path to a valid interpreter at the top. For example:
use CGI qw(:standard) ;
print "Hello, world";
If you want to enable CGI scripts based on an extension, such as .pl, you need to add the following line to srm.conf:
AddHandler cgi-script .pl
By default, CGI scripts are not allowed in your DocumentRoot directory, but they are allowed in other document directories. Document directories are created with the Alias command in srm.conf:
Alias /ResourceKit/ "E:/utilsamp/"
You can then include files that end in .pl within a document directory. You will still need to include the #! line with the full path to the perl.exe interpreter, as shown earlier.
If you want to allow CGI scripts in the DocumentRoot directory, add the ExecCGI option to the Options directive between the <Directory> and </Directory> entry for your DocumentRoot in access.conf (these appear directly after the comment titled:
# This should be changed to whatever you set DocumentRoot to.
After you have updated it, your Options directive may look something like:
Options Indexes FollowSymLinks ExecCGI
Hope that helps.