
aw at ice-sa
Nov 29, 2011, 2:28 PM
Post #8 of 10
(2253 views)
Permalink
|
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. I think it does, but read on. > > 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 > and you also get MOD_PERL_API_VERSION. I believe that you actually get those only when the script is being run by mod_perl. See this : http://perl.apache.org/docs/2.0/user/coding/coding.html#Environment_Variables Of course, with a script like printenv.pl, you will not notice a big difference in response times. But try this : At the beginning of your script, add these lines : use Apache::RequestRec; my $r=shift; print "Hostname : ",$r->hostname,"\n"; if you don't get an error, and you see the line in the output, then for sure you /are/ running under mod_perl. read here for more info : http://perl.apache.org/docs/2.0/user/coding/coding.html#Getting_the_C__r__Object > 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 [at] localhos > 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:aw [at] ice-sa] > 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:aw [at] ice-sa] >> 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. >> >> >> > >
|