CGIで複数のファイルに書き出したときにエラー発生します

[上に] [前に] [次に]
miyu [E-Mail] 2000/02/19(土) 18:08:24
CGIより複数のHTMLファイルを書き出し,その実行結果(「エラー」や「正常終了」などのメッセージ)をブラウザに
出力するスクリプト(perl)を書いています.
ローカル(Solaris1.2,apache1.3.11)でテストをし動作を確認してから,いざ
プロバイダのサーバ(FreeBSD,apache1.3.4)にのせようとしたら Internal Server Error
で実行できませんでした.
調べてみると,ファイル自体は正常に書き出されています.
また出力するファイルの数を1つにすると,エラーも出ず正常にブラウザには設定した
メッセージが出力されます.
ということで,select関数まわりの記述が怪しいと睨んでいるのですが…
使い方を誤っているでしょうか?

プログラムはこのような感じで書いています.実際は
print文は他の処理と使い廻しているため書き出す内容にわけて
サブルーチン化してあります.print文の中では特に出力先を
指定していません.
一つのファイルを書き終えたら閉じて別のファイルを
開くというようにして,
同時に複数のファイルに書き出すことがないので,
同じファイルハンドラを使用しています.


$a = 出力するファイルの数;
for( $i=0; $i<=$a; $i++ ){
    $html_file = "hoge$i.html";

    open( HTMLFILE, "> $html_file" );
         select(HTMLFILE);
         print "<HTML>\n<BODY>\n";
         ファイルに出力する文字列の処理いろいろ
         print "</BODY>\n</HTML>\n";
    close(HTMLFILE);
}

select(STDOUT);  # ブラウザ出力分
print "Content-type: text/html\n\n";
:

Yuuki 2000/02/19(土) 19:42:37
perl -wc hoge.cgi
で文法チェックをしてみてはどうでしょうか?

miyu 2000/02/19(土) 21:51:17
>perl -wc hoge.cgi
>で文法チェックをしてみてはどうでしょうか?

「これこれの変数は一度しか使われていない」というような警告が
出ますが,致命的なエラーはでてません.shellに入って perl -d
を実行しても正常に動作します.しかしプロバイダのwwwサーバ経由で
は動かないのです.
ローカル(正確にはイントラネット)サーバでは正常に動作します.

B-Cus 2000/02/20(日) 18:22:23
エラーが発生しなくなるまで、プログラムを削りましょう。
そうしないとこちらからは何とも言えないから。

あと、WWW サーバのエラーログを見ましょう。

[上に] [前に] [次に]