#1
  1. No Profile Picture
    Junior Member
    Devshed Newbie (0 - 499 posts)

    Join Date
    Feb 2000
    Location
    Halstead, Essex, England
    Posts
    2
    Rep Power
    0
    Hi,

    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:

    #!cerlbinperl.exe
    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.

    Thanks

    David


  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Feb 2000
    Location
    Englewood, CO
    Posts
    30
    Rep Power
    15
    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:

    #!C:PERL5.00464binMSWin32-x86perl.exe

    use CGI qw(:standard) ;
    print header();
    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.

    -TM

IMN logo majestic logo threadwatch logo seochat tools logo