Apache-2.2
Apache2 - 在 CGI 下通過 SetEnv 設置 PERL5LIB
我的設置如下:我有一個執行不同虛擬主機的 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>