1

IIS でいくつかの Perl CGI スクリプトを実行しようとしています。次のメッセージが表示されます。


CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LC_ALL = (unset),
    LANG = (unset)
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

この問題は、私たちの内部ライブラリを「使用」した場合にのみ発生することがわかりましたが、実際には (他の多くのものを使用して) 大きなものなので、どこを見ればよいか知りたいと思います。コマンドラインから同じスクリプトを実行すると、スクリプトは問題なく実行されます。「LANG」を「C」に、次に「LC_ALL」を「C」に設定しようとしましたが、効果がありませんでした。

どんなポインタでも大歓迎です!

4

4 に答える 4

2

LANG および LC_ALL 環境変数はシェル用に設定されていますが、IIS 用には設定されていません。私はIISの人ではありませんが、ドキュメントによると、IISはサービスであり、事前に設定してから再起動する必要があります。

または、スクリプトのコンパイルが開始されたらすぐに (問題の原因となっている大きなライブラリをロードする前に)、これらの変数を設定することもできます。

始める {
 $ENV{LC_ALL} = ...;
 $ENV{LANG} = ...;
 }

シェルにある値を見て、使用する必要がある値を取得します。

幸運を、

于 2008-12-08T17:22:46.947 に答える
0

ロケールのperldocが役立つかもしれません。トラブルシューティングセクションも備えています。

于 2008-12-08T17:17:18.877 に答える
0

PERL_BADLANG=0 を設定することでこのエラーを抑制することができますが、LC_ALL と同様に、Perl スクリプトを実行する前に設定する必要があります。

于 2008-12-08T17:21:28.200 に答える
0

Perl アプリケーションがブラウザにエラーを送信しているようで、ヘッダーが送信される前にエラーが発生します。

CGI モジュールを使用している場合、最初の原因はuse CGI::CARP qw(fatalsToBrowser).

この場合fatalsToBrowser、使用するよりも害が大きいので、今はオフにすることをお勧めします。

于 2008-12-08T17:00:23.623 に答える