Apache2 – 通过CGI下的SetEnv设置PERL5LIB

我的设置如下:我有一个运行不同虚拟主机的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>