現在、WebUI を使用する Perl プログラム内で、一連のカスタム perl モジュール、test.pm をその 1 つとして使用しようとしています。Apache2 がインストールされた Windows 7 マシンで実行しています。perl test.pl を使用して cmd プロンプトでプログラムを実行すると、プログラムは正常に実行されます。ただし、Apacheで実行すると、このエラーが発生します。
[Wed Jun 13 16:23:32 2012] [error] [client 127.0.0.1] Can't locate test.pm in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .) at C:/www/hello2.pl line 7.\r, referer: http://localhost/ui_test.htm
[Wed Jun 13 16:23:32 2012] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at C:/www/hello2.pl line 7.\r, referer: http://localhost/ui_test.htm
利用した:
foreach $key (sort keys(%ENV)) {
print "$key = $ENV{$key}<p> \n";
}
パス変数の下に、すべてのモジュールが配置されているフォルダーが表示されます。Perl パスに追加するために使用する必要がある他の場所はありますか?
さらに、use lib "C:\testpm\"; を追加します。私のコードでは、 @INC を次のように変更するだけです
(@INC contains: C:\testpm\ C:/Perl/lib C:/Perl/site/lib .)
Apache サーバーでカスタム Perl モジュールを実行するためのパスを追加するために、他に何かする必要がありますか?
回答に基づく解決策: これが最も効果的であることがわかりました。httpd-perl.conf ファイル内に、次の行を追加しました。
<IfModule env_module>
SetEnv PERL5LIB "C:\testpm;C:\testpm1;"
</IfModule>
(C:\testpm1 で拡張され、同様の質問を持つ人々にさらにモジュール フォルダーを追加する方法を示します。)