Voir Apache2::Directive. Par exemple, sur mon système de développement:
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" ];
a créé un fichier C:/bzzzt.txt
avec le contenu "E:/srv/unur/deploy/htdocs"
après avoir découvert que je devais préciser mes hôtes virtuels à l'aide
<VirtualHost unur.localdomain:8080>
...
</VirtualHost>
<VirtualHost qtau.localdomain:8080>
...
</VirtualHost>
plutôt que <VirtualHost *:8080>
. Sinon, chaque section <VirtualHost *:8080>
écrasait la précédente.
C'est embêtant. J'aurais pensé que chaque entrée VirtualHost
aurait été saisie par le ServerName
utilisé. Quant à savoir s'il y a un moyen plus facile, je crains qu'il n'y ait pas si vous voulez faire cela dans startup.pl
. Cependant, je ne suis pas sûr s'il est nécessaire de le faire en startup.pl
. Vous pouvez trouver la racine du document lors du traitement d'une demande en utilisant Apache2::RequestUtil::document_root.
Si vous utilisez Registry scripts, et que vous voulez changer à DOCUMENT_ROOT
, alors vous devriez être en mesure d'ajouter:
chdir $ENV{DOCUMENT_ROOT}
or die "Cannot chdir to '$ENV{DOCUMENT_ROOT}': $!";
au script au lieu d'avoir à mess avec startup.pl
et manutentionnaires, etc.
CGI, mod_perl, autre chose? – djc
App :: Info :: HTTPD :: Apache est un hack, il lit le fichier de configuration Apache. Ce n'est pas sûr. Y a-t-il une solution d'introspection? – codeholic