Hi Andre

Yes, you are right: I have removed "SetHandler modperl", which I did not need 
for the response stage, and the FilesMatch container, and things still work!

Thanks very much for your detailed reply.

Regards,


Jie

* André Warnier (tomcat) <a...@ice-sa.com> wrote:

> Date: Sun, 11 Jun 2017 11:36:48 +0200
> From: "André Warnier (tomcat)" <a...@ice-sa.com>
> To: modperl@perl.apache.org
> Subject: Re: mod_perl and cgi-script handler
> User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:38.0) Gecko/20100101
>  Thunderbird/38.5.0
> 
> Hi.
> 
> Now that you mention this, I believe that the original "mistake" in your 
> configuration
> was the
> 
> <Directory /var/www/my-server-name/cgi-bin>
> ..
>    SetHandler modperl
> ..
> </Directory>
> 
> and by just taking that line out, you would have the same effect (without the 
> <FilesMatch>).
> SetHandler is the line which originally overrides the effect of "ScriptAlias".
> 
> You do not need "SetHandler modperl" in order to do the authentication via
> your module. The "PerlAuthenHandler" is all that is needed.
> 
> SetHandler applies to the Apache response-generation phase, which comes
> later than the AAA phase.
> 
> To explain this in another way :
> 
> What you are now doing below is :
> 
> 1) ScriptAlias /cgi-bin/ "/var/www/my-server-name/cgi-bin/"
> 
> That does the same as :
> Alias /cgi-bin/ "/var/www/my-server-name/cgi-bin/"
> plus
> <Directory /var/www/my-server-name/cgi-bin/>
>   SetHandler cgi-script
> <Directory>
> 
> It sets the Apache response-generating module to be mod_cgi, instead of the
> default (which serves static pages).
> See :
> http://httpd.apache.org/docs/2.4/mod/mod_alias.html#scriptalias
> http://httpd.apache.org/docs/2.4/mod/mod_cgi.html
> 
> 2) SetHandler modperl
> 
> This overrides the "cgi-script" response handler which you set above, to set
> mod_perl instead.  mod_perl would now expect an additional directive
> PerlResponseHandler (some perl sub/method).
> See : http://perl.apache.org/docs/2.0/user/config/config.html#C_SetHandler_
> 
> 3) <FilesMatch>
>   SetHandler cgi-script
> 
> By doing this, you are resetting the response handler again, from mod_perl
> back to cgi-script (mod_cgi).
> 
> 
> So instead, if you just omit
>   SetHandler modperl
> 
> it would be simpler, and just as effective.
> 
> And if you want even more info about what is happening, see the following :
> https://perl.apache.org/docs/2.0/user/handlers/http.html
> (Note : the AAA part there is outdated for Apache 2.4)
> 
> On 11.06.2017 01:47, Jie Gao wrote:
> >It seemed "SetHandler" in the mod_perl section overwrote the settings for 
> >cgi-script. Adding the following to the directory stanza fixed the problem:
> >
> >     <FilesMatch .*>
> >         SetHandler cgi-script
> >     </FilesMatch>
> >
> >..
> >
> >Regards,
> >
> >
> >Jie
> >
> >
> >
> >* Jie Gao <j....@sydney.edu.au> wrote:
> >
> >>Date: Fri, 9 Jun 2017 20:35:43 +1000
> >>From: Jie Gao <j....@sydney.edu.au>
> >>To: modperl@perl.apache.org
> >>Subject: mod_perl and cgi-script handler
> >>User-Agent: Mutt/1.5.24 (2015-08-30)
> >>
> >>Hi All
> >>
> >>I have run into a problem with CGI under mod_perl, and I can't get my head 
> >>around it.
> >>
> >>I wanted to put a "cgi-bin" directory under my authentication/authorisation 
> >>handlers, but while authen/authz works fine (debug showing access granted), 
> >>the directory is in the end not handled by "cgi-script", the default cgid 
> >>content handler, and the text of the cgi script gets displayed instead.
> >>
> >>My configuration is like the following:
> >>
> >>#------------------------------------------------------------
> >>
> >>PerlAddAuthzProvider my_User W::W::Authnz->authz
> >>
> >><VirtualHost _default_:443>
> >>...
> >>ScriptAlias /cgi-bin/ "/var/www/my-server-name/cgi-bin/"
> >>
> >><Directory /var/www/my-server-name/cgi-bin>
> >>     AllowOverride None
> >>
> >>#    PerlOptions +SetupEnv
> >>#    Options +ExecCGI
> >>#    SetHandler modperl
> >>#    PerlAuthenHandler W::W::Authnz->authen
> >>#    AuthType mytype
> >>#    AuthName 'myname'
> >>#    <RequireAll>
> >>#    Require my_User mylogin
> >>#    Require ip 10.65.
> >>#    </RequireAll>
> >></Directory>
> >>
> >></VirtualHost>
> >>
> >>#------------------------------------------------------------
> >>
> >>If I comment out, as above, all the mod_perl configurations, and then add 
> >>"Require all granted" to the directory stanza, the cgi scripts will run 
> >>normally.
> >>
> >>Any tips/pointers as to where else I should look would be much appreciated.
> >>
> >>Regards,
> >>
> >>
> >>
> >>Jie
> >>
> >
> 

Reply via email to