Apache-2.2

Apache2 - 在 CGI 下通過 SetEnv 設置 PERL5LIB

  • April 7, 2011

我的設置如下:我有一個執行不同虛擬主機的 Apache2 網路伺服器,一個虛擬主機用於生產網站,另一個虛擬主機用於暫存/預覽系統。兩個虛擬主機都有不同的 DocumentRoots 和不同的 (Perl) CGI 文件夾。每個虛擬主機使用的模組應該位於不同的目錄中,所以我做了以下操作:

<VirtualHost...>
ServerName production
SetEnv PERL5LIB /home/production/modules
</VirtualHost>

<VirtualHost...>
ServerName staging
SetEnv PERL5LIB /home/staging/modules
</VirtualHost>

但是,我剛剛注意到,在我的 Perl CGI 腳本中,兩條路徑都填充到了我的 @INC 中,因此我無法將暫存模組與生產模組分開,例如 SetEnv 指令不限於單個虛擬主機,但似乎在全球範圍內工作。

我該如何解決這個問題?

謝謝!喬納斯

我發現了一個叫做SetEnvIf的東西,它可以用來根據請求頭設置環境變數。例如。

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>

引用自:https://serverfault.com/questions/130252