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 :)