I am still having trouble with Apache::AuthCookieDBI.

I tried moving the PerlSetVar line out of the virtual server to the main server but 
nothing in the behavior changed. 

Is it possible that the "Apache->server->dir_config()" code is somehow wrong?

I grepped all the other .pm files on my server and did not find a similar construct 
anywhere.

I realize that this begin statement happens when there is not yet a request object. 
But is it somehow occurring too early in the startup phase for the vars to ba 
available.

I really really want to figure out what's going wrong here - I am about to implement a 
workaround where I hardcode the values of the PerlSetVars into the BEGIN block, but 
that is very unsatisfying.

Other people use this module commonly, don't they? Is there a module I should be using 
instead?

Thanks for your help!

GV

At 08:50 AM 10/11/2002 +0200, Vegard Vesterheim wrote:
>On Thu, 10 Oct 2002 17:44:51 -0700 George Valpak <[EMAIL PROTECTED]> wrote:
>
>> At 04:16 PM 10/10/2002 -0700, I wrote:
>> >I am having trouble with Apache:AuthCookieDBI. I hope someone here can help 
>because I have not been able to find a solution despite extensive searching.
>> 
>> <snip>
>> 
>> OK, now I am poking in the code.
>> 
>> I modified the BEGIN section for AuthCookieDBI.pm thusly:
>> 
>> BEGIN {
>>         my @keyfile_vars = grep {
>>                 $_ =~ /DBI_SecretKeyFile$/
>>         } keys %{ Apache->server->dir_config() };
>> #my changes start here
>> my @list = keys %{ Apache->server->dir_config()};
>> Apache::log_error("keys:@list");
>> Apache::log_error( "all varrs=$_" );
>> Apache::log_error( "keyfile_vars=@keyfile_vars" );
>> #my changes end here
>>         foreach my $keyfile_var ( @keyfile_vars ) {
>>                 my $keyfile = Apache->server->dir_config( $keyfile_var );
>>                 my $auth_name = $keyfile_var;
>>                 $auth_name =~ s/DBI_SecretKeyFile$//;
>>                 unless ( open( KEY, "<$keyfile" ) ) {
>>                         Apache::log_error( "Could not open keyfile for $auth_nam
>> e in file $keyfile" );
>>                 } else {
>>                         $SECRET_KEYS{ $auth_name } = <KEY>;
>>                         close KEY;
>>                 }
>>         }
>> }
>> 
>> and restarted the server. the logs show:
>> 
>> 
>> [Thu Oct 10 17:34:14 2002] [error] keys:
>> [Thu Oct 10 17:34:14 2002] [error] all varrs=
>> [Thu Oct 10 17:34:14 2002] [error] keyfile_vars=
>> [Thu Oct 10 17:34:14 2002] [notice] Apache/1.3.23 (Unix)  (Red-Hat/Linux) 
>mod_ssl/2.8.7 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2 mod_perl/1.26 configured -- resuming 
>normal operations
>> [Thu Oct 10 17:34:14 2002] [notice] suEXEC mechanism enabled (wrapper: 
>/usr/sbin/suexec)
>> [Thu Oct 10 17:34:14 2002] [notice] Accept mutex: sysvsem (Default: sysvsem)
>> 
>> This to me indicates that the call to Apache->server->dir_config() is not returning 
>anything at all.  A quick look a the eagle book, p 456 does not explain to me why 
>that should be....any thoughts?
>> 
>
>I had a similar problem a while ago. Check out this thread:
>
>http://groups.yahoo.com/group/modperl/message/34266
>
>----- snip - snip -------------------------------------------------
>I discovered the same thing. I think the problem is that the BEGIN
>block as written, only considers parameters defined in the *main
>server*. So if you have any PerlSetVar in a Virtual Server, it will
>not be found.
>
>A kludgy workaround is to move the PerlSetVar out of any Virtual
>Server sections. A better option is to reimplement the mechanism for
>populating the SECRET_KEYS hash, so that Virtual Servers are handled
>properly.
>----- snip - snip -------------------------------------------------

Reply via email to