On Wed, 24 May 2000, Kees Vonk 7249 24549 wrote:

> > try this in httpd.conf:
> > 
> > <Perl>
> > delete $INC{'Apache/PerlVINC.pm'};
> > require Apache::PerlVINC;
> > </Perl>
> 
> Apache start up now (why does mod_perl not do this, can you 
> explain?), 

i can't explain because i haven't been able to reproduce it yet.
actually, i can explain this:
PerlModule Apache::PerlVINC
triggers a call to: ap_add_module(&XS_Apache__PerlVINC);
which makes the command table available to apache, for PerlINC, etc.
directives.  when apache re-reads it's config at startup, it clears the
module list first.  since Apache/PerlVINC.pm is already in %INC, Perl
would not try to re-load it, hence, skipping the call to ap_add_module(),
so apache can no longer see the Apache::PerlVINC command table.  mod_perl
has logic to delete the %INC entry so it is re-loaded, but certain cases
seems to prevent that from happening.  i'm not sure what case(s) that
is yet.  the <Perl> trick forces that to happen.

> however I get the following error when trying to 
> access a page that contains the reloaded module:
... 
> I played around a little bit and found that I have to put the 
> PerlVersionINC directive before the PerlINC directive (which 
> makes sense looking at the code) and then that works (you 
> might want to change this in your example, (and in the guide, 
> Stas)).

ok thanks!
 
> Thank you very much, your help has been invaluable.

no problem, glad you've found a solution.
 
> PS. my offer of helping out mainting this module still 
> stands, I start understanding it better all the time.

ok, whenever you're ready, just say the word :) 

Reply via email to