apacheでCGIを実行するには?

[上に] [前に] [次に]
hiropin [E-Mail] 1999/06/29(火) 16:33:15
現在TurboLinux3.0 & APACHE1.3.6でCGIをやってみようとおもい,試行錯誤しております。「とほほ」のページにある「CGIスクリプトのテンプレート」を試したところ,正常動作したのですが,掲示板設置法にかかれてある手順にて実行したCGIは動作しません。(させることが出できません)
エラーメッセージはInternal Server Error!!なのですが原因がいまいち分かりません。初心者なものでどのように設定を行えば解決するかがわからず困っています。どなたかご存じの方教えていただけないでしょうか?

moci [E-Mail] 1999/06/29(火) 17:21:16
apacheのエラーログを見てみるともうちょっと
情報が得られると思います。apacheのディレクトリにある
logsディレクトリの下にerror_logというファイルが
あると思います。あるいは、その内容で自己解決できるかも。

hiropin [E-Mail] 1999/06/30(水) 08:48:08
mociさんレスありがとうございます。
早速エラーログを確認したところ,
Premature end of script headers: /usr/local/apache/cgi-bin/wwwboard.cgi
というエラーが発生していました。
このエラーはソースのヘッダーが間違っている?というエラーなのでしょうか?なにも改変せず使用しているので間違っているとは思えません。やはりconfファイルの設定がおかしいのでしょうか?
もしおわかりでしたら,教えていただけないでしょうか?

moci [E-Mail] 1999/06/30(水) 10:38:55
「CGIスクリプトのテンプレート」も同じディレクトリで
動かしたのですよね。だとすれば、あまりconfは関係なさそうな。
CGIとしてではなく、シェルから直接wwwboard.cgiを
実行すると、どのようになりますでしょうか。

hiropin [E-Mail] 1999/06/30(水) 11:32:34
>「CGIスクリプトのテンプレート」も同じディレクトリで
動かしたのですよね。
そうです。
>CGIとしてではなく、シェルから直接wwwboard.cgiを
実行すると、どのようになりますでしょうか。
./wwwboard.cgi[enter]
と打ってみたら
(-h will show valid options).
というメッセージが返ってきました。
しかし、私には何のことやら見当がつきません...

moci [E-Mail] 1999/06/30(水) 13:45:33
perlに誤ったオプションをつけると、
(-h will show valid options)
が表示されますが、その前に
Unrecognized switch: -xxx
が付いているような。よく分かりませんね。

./wwwperl.cgi
の方はいまでも、シェルからでも動くのですよね?

perl wwwboard.cgi
だとどうでしょう?

ソースを変えてないのであれば、
/usr/local/bin/perl
にperlがあるはずですが、そこにあるのは
perlの実体でしょうか?

which perl
の結果は合ってますか?

むらし 1999/06/30(水) 14:59:25
まるっきり的外れかもしれませんが、別の観点から。勤務先での経験です。

サーバー機(FreeBSD)←−−→ Windows マシン
samba                           TEXT Editor (EUC 対応)
apache                          (CGI 編集)

という関係のシステムで、Windows マシンで cgi-bin 配下の CGI を
直接編集すると、TEXT Editor を閉じても open したままと同じ状態が
残るらしく、"Internal Server Error!!" が発生しました。
で、サーバー機上の別のディレクトリに目的の CGI を一旦コピーし、
コピーに対して編集を行い、終了後ホンモノにエクスプローラで上書き
する、という方法で対処しています。
TEXT Editor が悪いのか、samba が悪いのかは、不明です。
参考になると良いのですが。

hiropin [E-Mail] 1999/06/30(水) 15:11:27
mociさんへ
>./wwwperl.cgi
>の方はいまでも、シェルからでも動くのですよね?
はい,動いています。

>perl wwwboard.cgi
>だとどうでしょう?
試してみたところ,
Too late for "-T" option at wwwboard.cgi line 1.
というメッセージが返ってきました。

>ソースを変えてないのであれば、
>/usr/local/bin/perl
>にperlがあるはずですが、そこにあるのは
>perlの実体でしょうか?
私の環境では,/usr/bin/perlなので
一応,wwwboard.cgiの1行目を
#!/usr/bin/perl -T
に変更はしてあります。

お手数かけます。
ソースを変えてないのであれば、
/usr/local/bin/perl
にperlがあるはずですが、そこにあるのは
perlの実体でしょうか?

which perl
の結果は合ってますか?

hiropin [E-Mail] 1999/06/30(水) 15:22:30
むらしさんへ
レスありがとうございます。
>サーバー機上の別のディレクトリに目的の CGI を一旦コピーし、
>コピーに対して編集を行い、終了後ホンモノにエクスプローラで上書
>き
この方法を試してみましたが,私の環境ではやはり"Internal Server
Error!!"でした。

しかし,mociさんが教えてくださった,
perl wwwboard.cgi
の結果は正常なもの(ソースコード)が表示されました。

一歩前進しました。ありがとうございます。
する、という方法で対処しています。

hiropin [E-Mail] 1999/06/30(水) 15:33:23
自己レスです

./wwwperl.cgi[enter]
は動きますが
./wwwboard.cgi[enter]
はファイルは存在しているのですが,
No such file or Directory!!
のメッセージが表示されてしまいます。

moci [E-Mail] 1999/06/30(水) 16:24:29
1行目を
#!/usr/bin/perl
として、試してみてはいかがかと。
-Tって、何なのでしょう?
turn on tainting checks
って言われても、よく分からん^^;
wwwperl.cgiは-T付きで動いているのでしょうか?

hiropin 1999/06/30(水) 16:39:30
[[解決]]
#!/usr/bin/perl -T
の "-T"を外したら通りました。

mociさん,むらしさんありがとうございました。

B-Cus 1999/06/30(水) 17:01:57
> -Tって、何なのでしょう?
セキュリティチェックを厳しくします。
本来CGIは-Tで動かすべき。あたしゃやってませんが。

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