См. Apache2 :: Директива .Например, в моей системе разработки:
use Apache2::Directive ();
my $tree = Apache2::Directive::conftree();
my $vhost = $tree->lookup(VirtualHost => 'unur.localdomain:8080');
File::Slurp::write_file "C:/bzzzt.txt", [ $vhost->{DocumentRoot}, "\n" ];
создал файл C:/bzzzt.txt
с содержанием "E:/srv/unur/deploy/htdocs"
после того, как обнаружил, что мне нужно указать свои виртуальные хосты, используя
<VirtualHost unur.localdomain:8080>
...
</VirtualHost>
<VirtualHost qtau.localdomain:8080>
...
</VirtualHost>
а не <VirtualHost *:8080>
.В противном случае каждый раздел <VirtualHost *:8080>
перезаписывал предыдущий.
Это раздражает.Я бы подумал, что каждая запись VirtualHost
была бы введена с помощью ServerName
.
Что касается более простого способа, я боюсь, что нет, если вы захотите сделать это в startup.pl
.Однако я не уверен, нужно ли это делать в startup.pl
.Вы можете узнать корень документа при обработке запроса, также используя Apache2 :: RequestUtil :: document_root .
Если вы используете Сценарии реестра и хотитеизмените на DOCUMENT_ROOT
, тогда вы сможете добавить:
chdir $ENV{DOCUMENT_ROOT}
or die "Cannot chdir to '$ENV{DOCUMENT_ROOT}': $!";
к сценарию вместо того, чтобы возиться с startup.pl
, обработчиками и т. д.