1

Apache 2.2 とイチゴの perl をインストールしました。textxx.pm があります。そして、簡単なスクリプトを用意します

#!/usr/bin/perl
use textxx;
print("HelloWorld!");

cmdで実行すると動作します。Web ブラウザーで実行すると、次のようなエラーが表示されます: Can't locate textxx.pm in @INC (@INC contains: C:/strawberry/perl/site/lib C:/strawberry/perl/vendor/lib C:/ストロベリー/perl/lib .)

"use" のないスクリプトが機能するのはおかしいです。

私のモジュールはスクリプトと同じディレクトリにあります

4

2 に答える 2

2

textxx.pm perl モジュールを使用しようとしていますが、apache の実行中に見つかりません。使用行を削除すると、モジュールを探していないため、明らかに機能します。

textxx.pm がたとえば C:/strawberry/perl/site/lib にある場合は、これをスクリプトの先頭に追加するだけです:

#!/usr/bin/perl
use lib "C:/strawberry/perl/site/lib";
use textxx;
print("HelloWorld!");
于 2012-10-30T16:42:04.353 に答える
1

許可の欠如が問題になる可能性がありますが、問題は、Perlがモジュールのスクリプトを含むディレクトリを検索することを期待していることだと思います。Perlは、少なくともデフォルトでは、それを行いません。

現在の作業ディレクトリをたまたまスクリプトと同じに設定したため、コンソールからは機能しましたが、apacheを介して実行している場合はそうではありません。

スクリプトと同じディレクトリを検索するようにPerlに指示するには、次の理由で次を追加しますuse textxx;

use Cwd qw( realpath );
use File::Basename qw( dirname );
use lib dirname(realpath($0));
于 2012-10-31T04:23:44.353 に答える