web-dev-qa-db-ja.com

Apache2-CGIの下でSetEnvを介してPerl5LIBを設定する

私のセットアップは次のとおりです。1つのApache2Webサーバーが異なる仮想ホストを実行しています。1つの仮想ホストは本番Webサイト用で、もう1つの仮想ホストはステージング/プレビューシステム用です。両方のvhostには、異なるDocumentRootsと異なる(Perl)CGIフォルダーがあります。これらの各vhostに使用されるモジュールは異なるディレクトリにあるはずなので、次のようにしました。

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

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

ただし、Perl CGIスクリプトでは、両方のパスが@INCに入力されるため、ステージングモジュールを本番モジュールから分離できないことに気づきました。 SetEnvディレクティブは、単一の仮想ホストに限定されていませんが、グローバルに機能しているようです。

どうすればこれを解決できますか?

ありがとう!ジョナス

2
j0nes

SetEnvIf と呼ばれるものを見つけました。これは、リクエストヘッダーに基づいて環境変数を設定するために使用できます。例えば。

SetEnvIf Request_URI "\request-for-staging\" Perl5LIB=/home/staging/modules

しかし、それは多分重すぎるかもしれません...だからあなたは mod_rewrite の[E = ...]オプションを試すことができます。

お役に立てば幸いです:)

0
Knight Samar
  <VirtualHost ...>
      ServerName dev1
      PerlOptions +Parent
      PerlSwitches -I/home/dev1/lib/Perl
  </VirtualHost>

  <VirtualHost ...>
      ServerName dev2
      PerlOptions +Parent
      PerlSwitches -I/home/dev2/lib/Perl
  </VirtualHost>
2
dengel