1

mod_perl Webサイトを構築していますが、Perlコードで使用される環境変数を設定する必要があります。

これまで、PerlSetEnvこの変数を設定するためにディレクティブを使用していました。

    PerlSetEnv MYVAR myvalue

    <LocationMatch /perlpath/>
        SetHandler modperl
        PerlResponseHandler myhandler
        Header set Cache-control "no-cache"
    </LocationMatch>

これは問題なく動作しますが、最初の呼び出しが非常に遅いため、mod_perlハンドラーをプリロードしたいと思います。そこで、Apache仮想ホストファイルを次のように変更しました。

    PerlSetEnv MYVAR myvalue
    PerlModule myhandler         <- add this line

    <LocationMatch /perlpath/>
        SetHandler modperl
        PerlResponseHandler myhandler
        Header set Cache-control "no-cache"
    </LocationMatch>

しかし、これを行うと、MYVARプリロード時にカスタム環境変数が設定されずmyhandler、コードが失敗します。

PerlModuleでは、ディレクティブによってエクスポートされる環境変数を設定することは可能ですか?

4

2 に答える 2

1

PerlPassEnvを使用して、サーバーで実行されているプログラムに環境変数を転送できます。ただし、これらは、修正フェーズまで有効にならないsetEnvおよびPassEnvとは異なり、apache要求サイクルの最初のフェーズで有効になります。

以前は、BEGIN句を使用して、要求フェーズのかなり前に表示したいORACLE_HOMEなどの環境変数を設定しました。

httpd.confのperlBEGINブロック内に変数を設定してみてください。これにより、従来のディレクティブよりもはるかに先に変数が公開される可能性があります。

于 2012-09-23T10:50:03.120 に答える
0

たぶん、仮想ホスト構成内でsetenvを移動する必要がありますか?

<LocationMatch /perlpath/>
    SetHandler modperl
    PerlSetEnv MYVAR myvalue
    PerlResponseHandler myhandler
    Header set Cache-control "no-cache"
</LocationMatch>
于 2012-09-21T15:31:21.940 に答える