I have a rather odd problem, one which I can only assume is a bug somewhere, due to how bizarre it is.
I am attmempting to generate virtual host configs via mod_perl, using <Perl> sections in httpd.conf. Not all hosts will be using a /perl Alias, though, so I'm reading in an external config, which looks like the following: ### Begin external vhost config ####################################### $suexec = 0; $vhost{config} = { Location => { "/perl/" => { SetHandler => "perl-script", PerlHandler => "Apache::Registry", Options => "ExecCGI" } }, Alias => [ '/perl/' => "$vhostdir/$dir/perl/" ] }; ### End external vhost config ######################################### This config is being read by the following line: require "$vhostdir/$dir/.config" if (-r "$vhostdir/$dir/.config"); The configuration options are being added to %VirtualHost as follows: map { $VirtualHost{$host}->{$_} = $vhost{config}->{$_} } keys(%{$vhost{config}}); Now for the oddity: The above doesn't work. Both Data::Dumper and Apache::PerlSections show the options as being added to %VirtualHost, but the server never seems to see the Alias (no idea on the Location directive, since the Alias fails to work). Examination of the error_log shows that the server is trying to get htdocs/perl/, as if the Alias didn't exist. Just to make things a bit stranger: if I add those sections directly into my vhost code in httpd.conf, they work. Again, Data::Dumper and Apache::PerlSections shows what I expect (other than the options being ordered a bit differently in the hash, but that's normal). This is what makes me suspect a bug, because this is so bizarre. Included below is the output I grabbed from Apache:PerlSections in both cases. Any ideas? This problem is really quite annoying. ### Working config ############################################################# %VirtualHost = ( 'linuxhelp.mirkwood.net' => { 'Location' => { '/perl/' => { 'PerlHandler' => 'Apache::Registry', 'Options' => 'ExecCGI', 'SetHandler' => 'perl-script' } }, 'DocumentRoot' => '/home/vhosts/linuxhelp.mirkwood.net/htdocs', 'ServerAdmin' => 'test@vhost', 'CustomLog' => '/home/vhosts/linuxhelp.mirkwood.net/logs/linuxhelp.mirkwood.net.access_log combined', 'Alias' => [ '/perl/', '/home/vhosts/linuxhelp.mirkwood.net/perl/' ], 'ServerName' => 'linuxhelp.mirkwood.net', 'ErrorLog' => '/home/vhosts/linuxhelp.mirkwood.net/logs/linuxhelp.mirkwood.net.error_log', 'ScriptAlias' => [ '/cgi-bin/', '/home/vhosts/linuxhelp.mirkwood.net/cgi-bin/' ], 'ServerAlias' => 'linuxhelp' } ); ### Alias is broken here - WHY? ################################################ %VirtualHost = ( 'linuxhelp.mirkwood.net' => { 'Location' => { '/perl/' => { 'PerlHandler' => 'Apache::Registry', 'Options' => 'ExecCGI', 'SetHandler' => 'perl-script' } }, 'ScriptAlias' => [ '/cgi-bin/', '/home/vhosts/linuxhelp.mirkwood.net/cgi-bin/' ], 'DocumentRoot' => '/home/vhosts/linuxhelp.mirkwood.net/htdocs', 'ServerAdmin' => 'test@vhost', 'Alias' => [ '/perl/', '/home/vhosts/linuxhelp.mirkwood.net/perl/' ], 'CustomLog' => '/home/vhosts/linuxhelp.mirkwood.net/logs/linuxhelp.mirkwood.net.access_log combined', 'ServerAlias' => 'linuxhelp', 'ServerName' => 'linuxhelp.mirkwood.net', 'ErrorLog' => '/home/vhosts/linuxhelp.mirkwood.net/logs/linuxhelp.mirkwood.net.error_log' } ); -- Mike Edwards Brainbench certified Master Linux Administrator http://www.brainbench.com/transcript.jsp?pid=158188 ----------------------------------- Unsolicited advertisments to this address are not welcome.