我的设置如下:我有一个运行不同虚拟主机的Apache2networking服务器,一个虚拟主机用于生产网站,另一个虚拟主机用于登台/预览系统。 这两个虚拟主机有不同的DocumentRoot和不同的(Perl)CGI文件夹。 每个虚拟主机使用的模块应该在不同的目录中,所以我做了以下几点:
<VirtualHost...> ServerName production SetEnv PERL5LIB /home/production/modules </VirtualHost> <VirtualHost...> ServerName staging SetEnv PERL5LIB /home/staging/modules </VirtualHost>
不过,我只注意到,在我的Perl CGI脚本中,两条path都被填充到我的@INC中,所以我不能将生产模块与生产模块分开,例如SetEnv指令不仅限于单个虚拟主机,而且似乎全球工作。
我该如何解决这个问题?
谢谢! 乔纳斯
我发现了一个名为SetEnvIf的东西,它可以用来根据请求头设置环境variables。 例如。
SetEnvIf Request_URI "\request-for-staging\" PERL5LIB=/home/staging/modules
但是这可能太重了…所以你可以试试mod_rewrite的[E = …]选项。
希望帮助:)
<VirtualHost ...> ServerName dev1 PerlOptions +Parent PerlSwitches -I/home/dev1/lib/perl </VirtualHost> <VirtualHost ...> ServerName dev2 PerlOptions +Parent PerlSwitches -I/home/dev2/lib/perl </VirtualHost>