i will add this to the ToDo to look at before 1.26. in the meantime, if
you don't need to access these variables before the fixup stage and don't
need %ENV to be inherited by a forked program, try changing PerlSetEnv to
SetEnv.
On Sat, 2 Jun 2001, Roman Maeder wrote:
> back in 1998 and 99 there was a longer discussion about scoping problems
> with PerlSetEnv (inside httpd.conf and .htaccess files), which ended
> with fixes applied to mod_perl-1.20, which is the version I have been
> using (along with apache-1.3.6 and perl 5.00404)
>
> Now I am setting up a brand new machine to replace my aging web server
> and compiled Perl 5.6.1, apache_1.3.20, and mod_perl-1.25 (Solaris 8)
> and the old problem is back, only worse. This is so severe I can't
> imagine it happening in all configurations out there, but here is
> what I found.
>
> Summary:
>
> 1 a variable defined with PerlSetEnv in the main server (outside any
> virtual hosts) cannot be changed inside a virtual host section (the
> change is ignored)
>
> 2 a variable defined inside a virtual host section is visible to all
> *other* virtual hosts and the main server
>
> 3 a variable defined in httpd.conf cannot be changed inside a .htaccess
> file (the change is ignored)
>
>
> I set up my Apache with a minimal httpd.conf and two IP-based
> virtual hosts (besides the main server), configured like this
> (plus the necessary "AllowOverride All", etc.; see attached file)
>
> # main server
>
> DocumentRoot "/www/test/root"
>
> PerlSetEnv VarA Global
> PerlSetEnv VarB Global
>
>
> # virthost 1
>
> <VirtualHost IP1>
> DocumentRoot "/www/test/root1"
>
> PerlSetEnv VarA VirtHost1
> PerlSetEnv VarC VirtHost1
>
> </VirtualHost>
>
>
> # virthost 2
>
> <VirtualHost IP2>
> DocumentRoot "/www/test/root2"
>
> PerlSetEnv VarA VirtHost2
>
> </VirtualHost>
>
>
> additionally, /www/test/root2 contains this .htaccess file
>
> PerlSetEnv VarB root2
> PerlSetEnv VarD root2
>
>
> Using a Apache::Registry script to print the enviroment in all three
> servers (main and the two virtual hosts), I get these values
>
> Var main virthost1 virthost2
>
> VarA Global Global* Global*
> VarB Global Global Global*
> VarC VirtHost1* VirtHost1 VirtHost1*
> VarD - - root2
>
> the entries with the * are wrong, I think.
>
> Has anyone seen something like this before?
>
>
> Regards,
>
> Roman Maeder
>
>