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ハンドラーなどをいじる代わりに、スクリプトに。