0

Tomcat で CGI をセットアップしましたが、テスト スクリプトの 1 つで問題なく動作します。現在、DBD/Oracle.pm を使用するより洗練されたスクリプトを試していますが、catalina.log を検査すると、次のエラーがスローされます。

StandardContext[/TestApp]cgi: runCGI (stderr):@INC で Oracle.pm が見つかりません (@INC には次が含まれます: ....)

@INC の内部を調べると、Oracle.pm が存在するパスが欠落していることに気付きます。ただし、コマンドで perl -V を実行すると、 @INC: /usr/local/oracle/oraperllib/ が表示されます。 ..

これは、Oracle.pm が存在する欠落したパスです。

Tomcat は異なるバージョンの perl を使用していますか? もしそうなら、どのように設定しますか?

ありがとう!

4

3 に答える 3

0

コマンドラインからPerlを実行する場合、ファイルなどの場所からOracle.pmの非標準パスを取得している可能性があり.bashrcます。

WebサーバーがCGIスクリプトを実行するとき、同じ環境変数を取得していない可能性があります。「Oracle.pm」を標準パスに移動するか、CGIスクリプトでパスを明示的に「使用」します。

use lib '/usr/local/oracle/oraperllib/';
于 2012-08-30T20:26:52.510 に答える
0

私は同じ問題を抱えていました.PERL5LIBに関するマークからのヒントは私が必要としていたものです. ただし、次の重要な手順が必要です。

cgi サーブレット構成内にある web.xml でpassShellEnvironmentを true に設定します。

<init-param>
    <param-name>passShellEnvironment</param-name>
    <param-value>true</param-value>
</init-param>

これに関する Tomcat のドキュメントを参照してください: https://tomcat.apache.org/tomcat-7.0-doc/cgi-howto.html#Configuration。デフォルトでは、このオプションは false に設定されており、環境変数は渡されません。

于 2015-05-08T00:06:22.047 に答える