4

最近、RHEL 5 に perl バージョン 5.8.8 でいくつかの perl モジュールをインストールしていましたが、すべて正常にインストールされました。@INC にモジュールが存在することがわかりますが、私の TWiki サイトでは、エラーを返すモジュールが見つからないと主張しています: @INC (モジュールを含む多くのパス) で Net/LDAP.pm が見つかりませんTWiki.pm 行 xx. 私がperl -e 'use Net::LDAP';行っても何も返されません。つまり、perl はそのモジュールを見つけることができます。また、TWiki は正しく構成されており、インストールする必要のある特定のモジュールを使用するプラグインを除いて正常に動作します。念のため、setLib.cfg へのパスも追加しました。

編集:

which perl戻り値/usr/bin/perl

のシバン線twiki/cgi-bin/view#!/usr/bin/perl -wT

perl -MNet::LDAP -e 'print $INC{"Net/LDAP.pm"}, "\n";'戻り値:

/usr/lib/perl5/site_perl/5.8.8/Net/LDAP.pm

Apacheエラーログは次[Tue Nov 16 10:53:47 2010] [error] [client 10.76.14.170] [Tue Nov 16 10:53:47 2010] view: INC /usr/lib/perl5/site_perl/5.8.8 at /usr/local/apache2/htdocs/twiki5_pdc/bin/view line 44.のように表示します:したがって、正しいパスを使用します。

4

5 に答える 5

4

@INC@INCは、コマンド ラインとは異なる可能性があります。別の Perl インタープリター バイナリを使用しているか、.

コマンドラインの@INC: - を確認し、あなたが言及したWikiのエラーで印刷されたperl -e 'print join(",", sort @INC);'ものと比較してください。@INC

コマンドラインに存在するWebサーバーのPerlの@INCにディレクトリを追加する必要がある場合があります(「方法」は、mod_perlで実行しているかどうかによって異なります)。

于 2010-11-10T16:04:06.720 に答える
3

Apache が考える INC パスと、コマンドライン Perl が考える INC パスは、通常、2 つの完全に異なるものです。PERL5LIBApache 構成で環境変数を設定する必要がある場合があります。

私は TWiki/FOSwiki の大ファンで、過去に何度かこの問題に遭遇しました。

于 2010-11-10T15:55:18.197 に答える
2
  1. これを行います(かなりの数のケースで機能します):

    perldoc -l Net::LDAP
    

    ファイルに POD がある場合は、.pm. それでも、.podファイルを指している場合.pm、通常は同じディレクトリにあります。

  2. その後、そのリストを確認し@INC(、パスがそこにあるかどうかを確認します。Apache が実行されている環境は、おそらく存在しないため、おそらく変更する必要があります。


それはうまくいかなかったので、これは次のようにする必要があります。

perl -MNet::LDAP -e 'print $INC{"Net/LDAP.pm"}, "\n";'

perl が実際にロードしている場合は、どこからロードしているかがわかります。

于 2010-11-10T16:03:16.793 に答える
1

おそらくその理由は、perlモジュールをrootとしてインストールしていて、他のモジュールに対して実行可能に設定されていなかったため、apacheがそれらを実行/使用できなかったためです。

于 2010-11-25T13:35:07.737 に答える
1

Horses:インストール ガイドを参照して、すべてが正しく構成されていることを確認しましたか?

Zebras: bin/twiki_cgi を編集して $TWiki::engine->run() の直前に追加:

warn "ENV $_ => $ENV{$_}" for sort keys %ENV;
warn "INC $_" for @INC;

ENV および INC を含む行の Apache エラー ログを grep します。PERL5LIB または PERLLIB を含む ENV 行を探します。INC 行をチェックして、CPAN ライブラリを含むディレクトリがリストされていることを確認します。

于 2010-11-10T17:06:08.333 に答える