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 サーバのエラーログを見ましょう。
[上に]
[前に]
[次に]