Re: Installing mod_perl on Windows 7
gAzZaLi <[email protected]>
| Newsgroups | gmane.comp.apache.mod-perl |
|---|---|
| Message-ID | <[email protected]> |
Looks like you're all set and running mod_perl 2.
In mod_perl 2, $ENV{GATEWAY_INTERFACE} is not special. It was only
special in mod_perl 1, in that it said CGI-Perl/1.1 under mod_perl 1
rather than CGI/1.1.
To see if you're running under mod_perl 2, check $ENV{MOD_PERL}.
You see that it's set in your system from what you've cut and pasted so
you are running under mod_perl 2!
Good luck!
On 11/29/2011 1:02 PM, Desilets, Alain wrote:
> Thx again for the help. I tried what you suggested (after reading gAzZaLi's answer), but it still doesn't seem to help.
>
> Here are the lines I have added to my httpd.conf file:
>
> ----------------
> LoadFile "C:/Perl/bin/perl512.dll"
> LoadModule perl_module modules/mod_perl.so
> ----------------
>
> And a bit further...
>
> ------------------
> Alias /perl/ "C:/wamp/www/perl/"
> <Location /perl/>
> SetHandler perl-script
> PerlResponseHandler ModPerl::Registry
> PerlOptions +ParseHeaders
> Options +ExecCGI
> Order allow,deny
> Allow from all
> </Location>
> ------------------
>
> I have a script C:/wamp/www/perl/printenv.pl, which prints the content of the %ENV hash. When I run it, I still get CGI/1.1 for the GATEWAY_INTERFACE key. See output at the end of this message.
>
> Note that I do get
>
> MOD_PERL: mod_perl/2.0.4
>
> Which seems to indicate that mod_perl is indeed installed. But it doesn't seem to be actually invoked for running the script.
>
> Any additional advice?
>
> Thx.
>
> Alain
>
> === Output of http://localhost/perl/printenv.pl ===
>
> SCRIPT_NAME: /perl/printenv.pl
> SERVER_NAME: localhost
> SystemRoot: C:\Windows
> SERVER_ADMIN: admin@localhost
> HTTP_ACCEPT_ENCODING: gzip, deflate
> HTTP_CONNECTION: keep-alive
> REQUEST_METHOD: GET
> HTTP_ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
> SCRIPT_FILENAME: C:/wamp/www/perl/printenv.pl
> COMSPEC: C:\Windows\system32\cmd.exe|
> SERVER_SOFTWARE: Apache/2.2.21 (Win32) PHP/5.3.8 mod_perl/2.0.4 Perl/v5.12.3
> HTTP_ACCEPT_CHARSET: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> WINDIR: C:\Windows
> QUERY_STRING:
> REMOTE_PORT: 56619
> PATHEXT: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
> HTTP_USER_AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0
> SERVER_PORT: 80
> SERVER_SIGNATURE:
> HTTP_ACCEPT_LANGUAGE: fr-ca,fr;q=0.8,en-us;q=0.5,en;q=0.3
> REMOTE_ADDR: 127.0.0.1
> SERVER_PROTOCOL: HTTP/1.1
> PATH: C:\Perl\site\bin;C:\Perl\bin;C:\Perl64\site\bin;C:\Perl64\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;C:\cygwin\bin;C:\Program Files (x86)\QuickTime\QTSystem\; C:\Users\Desiletsa\android-sdks\tools;
> MOD_PERL_API_VERSION: 2
> REQUEST_URI: /perl/printenv.pl
> GATEWAY_INTERFACE: CGI/1.1
> SERVER_ADDR: 127.0.0.1
> DOCUMENT_ROOT: C:/wamp/www
> HTTP_HOST: localhost
> MOD_PERL: mod_perl/2.0.4
>
>
>
> -----Original Message-----
> From: André Warnier [mailto:[email protected]]
> Sent: Tuesday, November 29, 2011 3:25 PM
> To: mod_perl list
> Subject: Re: Installing mod_perl on Windows 7
>
> Desilets, Alain wrote:
>> OK, so I uninstalled Apache 64 bits, and installed Apache 32 bits instead.
>>
>> Now, Apache starts correctly with the following two lines in httpd.conf
>>
>> ----------------
>> LoadFile "C:/Perl/bin/perl512.dll"
>> LoadModule perl_module modules/mod_perl.so
>> ----------------
>>
>> Only problem is that my scripts still seem to run under the conventional CGI interface, instead of mod_perl. For example, if I run this script:
>>
>> ----------------
>> #!C:/Perl/bin/perl
>>
>> print "Content-type: text/plain\r\n\r\n";
>>
>> print "Server's gateway interface:\t$ENV{GATEWAY_INTERFACE}\n\n";
>>
>> print "Other values of the server environment:\n";
>> foreach my $a_key ( keys %ENV ) {
>> print "$a_key:\t$ENV{$a_key}\n";
>> }
>> ------------------
>>
>> I get "Server's gateway interface: CGI/1.1", and according to this page:
>>
>> http://perl.apache.org/docs/1.0/guide/install.html#Testing_via_a_CGI_script
>>
>> this means I am NOT running mod_perl. If I WAS running mod_perl, I should be seeing something like 'CGI-Perl/1.1' instead.
>>
>> Note that I saw the following line in httpd.conf
>>
>> ---------------
>> LoadModule cgi_module modules/mod_cgi.so
>> ---------------
>>
>> I tried commenting it out, thinking that maybe this was overriding mod_perl. But when I do that, my scripts don't run as a perl script anymore. Instead, the source code of the scripts is displayed in the browser when I try to invoke it.
>>
>> I have looked through all the documentation I could find about installing mod_perl for windows, and I can't find any additional step beyond the ones I have taken so far.
>>
>> Any suggestions you have will be greatly appreciated.
>>
>
> If your cgi scripts are only Perl and shell scripts, then you need to add something to
> your<Location /cgi-bin> section. Look here :
>
> http://perl.apache.org/docs/2.0/user/intro/start_fast.html#Registry_Scripts
>
> Basically, it means that you need to tell Apache that for the files in that directory, the
> Apache handler (the module which generates the responses to the requests) is mod_perl.
>
> (mod_perl is smart enough that when it sees a shell script, it will call the shell to run
> it, instead of itself).
>
> Make sure that you read the caveats of running scripts under mod_perl (persistence e.g.).
>
>
>> Thx.
>>
>> Alain Désilets
>>
>>
>> -----Original Message-----
>> From: André Warnier [mailto:[email protected]]
>> Sent: Tuesday, November 29, 2011 10:48 AM
>> To: mod_perl list
>> Subject: Re: Installing mod_perl on Windows 7
>>
>> Desilets, Alain wrote:
>>> Hi folks,
>>>
>>> This is my first post on this list.
>>>
>>> I am trying to install mod_perl on Windows 7, and am running into some problems.
>>>
>>> Here's what I did.
>>>
>>> First, I ran the following commands to get the mod_perl package and install it:
>>>
>>> ----------------
>>> ppm rep add http://cpan.uwinnipeg.ca/PPMPackages/12xx
>>> ppm install mod_perl
>>> ----------------
>>>
>>> Then I added the following lines at the start of my httpd.conf file:
>>>
>>> ----------------
>>> LoadFile "C:/Perl/bin/perl512.dll"
>>> LoadModule perl_module modules/mod_perl.so
>>> ----------------
>>>
>>> But since then, Apache won't restart, unless I comment out those two lines. To diagnose the problem, I ran the command:
>>>
>>> ----------------
>>> httpd.exe -t -c httpd.conf
>>> ----------------
>>>
>>> And it gives me the following error message:
>>>
>>> ----------------
>>> httpd: Syntax error on line 29 of C:/wamp/bin/apache/Apache2.2.17/conf/httpd.conf: Cannot load C:/Perl/bin/perl512.dll into server: %1 is not a valid Win32 application.
>>> ----------------
>>>
>>> The file C:/Perl/bin/perl512.dll does exist.
>>>
>>> I am wondering if the problem is not due to a difference between 32 and 64 bits applications. I ran a small perl script which looks at the DOS headers of executables, to find the architecture that the executable was compiled for, and here's what it tells me:
>>>
>>> httpd.exe: AMD64
>>> perl512.dll: i386
>>> mod_perl.so: i386
>>>
>>> I would think that a 64 Apache is able to load a 32 bit DLL, no?
>> No.
>>> Does anyone have some ideas or suggestions?
>>
>> a 64-bit Windows can run 32 and 64 applications. But within an application, you cannot
>> mix and match.
>> So either get a 64-bit perl and mod_perl, or get a 32-bit Apache.
>> I would suggest a 32-bit Apache, as for a workstation, you are unlikely to need the extra
>> memory that 64-bit would allow you to use; and your 32-bit applications will use less
>> memory in vain.
>>
>>
>>
>
>
>