我想学习DOCUMENT_ROOT在startup.pl,但我可以做的最好的是学习server_root中:

use Apache2::ServerUtil ();
$server_root = Apache2::ServerUtil::server_root();

这是相当无用的。我可以设置一个环境变量与

SetPerlEnv DOCUMENT_ROOT /path/to/www

但如果可能我不喜欢额外的配置。

有没有办法通过其他方式得到DOCUMENT_ROOT?

有帮助吗?

解决方案

请参阅的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和处理程序等周围乱。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top