2

Perl スクリプトを CGI スクリプトとして実行しようとしています。cmd ラインから perl スクリプトを実行すると問題なく動作しますが、ブラウザから実行すると次のエラーが表示されます。

Storable object version 1.012 does not match $Storable::VERSION 1.010 at
C:/Perl/lib/DynaLoader.pm line 225.
Compilation failed in require at C:/Perl/site/lib/AsiaXMLUtils.pm line 20.
BEGIN failed--compilation aborted at C:/Perl/site/lib/AsiaXMLUtils.pm line 20

関連する perl スクリプトは、基本的に、一部のジョブをリモート ソフトウェアのキューに入れるように設計されています。ベルが鳴る場合、前述のファイルの 20 行目は次のとおりです。

use Storable qw(&retrieve &store);

これが私がやったことです:

  1. CGI スクリプトのトラブルシューティング方法について次のページを確認しましたが、問題を回避できませんでした。

  2. Perl のバージョンが、スクリプトを送信しているソフトウェアに使用されているものと同じであることに加えて、私の PC でも同じであることを確認しました。それが問題だったとしたら、コマンドラインからスクリプトを実行することもできなかったでしょう。

  3. 同じ基本的な html コードを使用して単純な Perl CGI (hello world) スクリプトを実行したので、cgi ファイルを間違った場所に配置 (またはアクセス) していないことを意味すると思います。

このタスクの締め切りが迫っています。そのような問題を解決するためにどのようなアプローチをとるべきかを考える必要があります。私はPerlが初めてです。問題を回避するために何を読むべきかについての手がかりをいただければ幸いです。コードの多くは独自のものであるため、とにかくコードを共有することはできません。

4

3 に答える 3

2

Storable は XS モジュールです。つまり、Storable.dll (または Unix では Storable.so) に C コードがあり、Storable.pm に Perl コードがあります。このエラーは、Storable.dll のバージョン ("Storable object version 1.012") が Storable.pm ("$Storable::VERSION 1.010") と一致しないことを示しています。コマンド ラインからスクリプトを実行できる場合、それは Web サーバーが別のバージョンの Perl を使用しているか、別のバージョンであるか@INC、または Web サーバーのディレクトリに追加の Storable.dll があることを意味します。

于 2013-05-31T07:31:22.940 に答える