- ベストアンサー
Server error! Error 500
RedHat7.3, apache-2でCGIが動くようにしたいのですが、 httpd.confをいじったりいろいろやってるのですが Server error! Premature end of script headers: tmp.cgi Error 500 と言われてしまいます。 Object not found!(Error404)ではないのでcgiファイルがあることは認識されてるようですが、 ”早すぎる終わり”をどうやったら回避できますか? 教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
その時に出力されているソースは正しいのですか? あと念のためにパーミッションは705になっているのでしょうか?
その他の回答 (6)
- marimo_cx
- ベストアンサー率25% (873/3452)
Content-Type: text/html; charset=$page_code Content-Language: ja <HTML LANG="ja"> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=$page_code"> <TITLE></TITLE> </HEAD> ↑ これくらいやれば何とかなるんじゃないですか? $page_code は使う文字コードです。
- marimo_cx
- ベストアンサー率25% (873/3452)
> ブラウザではやはりError 500になってしまいます。 No2 misoka さんのご指摘のmimeヘッダの不備問題はどうでしょうか?
補足
確認はどうすれば出来ますか? nkfでwindows用に変換する前のファイルをコマンドラインで実行した限りでは 1行目に Content-type: text/html と出力されますが。
- marimo_cx
- ベストアンサー率25% (873/3452)
> Server error! > Premature end of script headers: tmp.cgi > Error 500 と > [root@ice imGBOOK]# ./im_gbook.cgi > : bad interpreter: そのようなファイルやディレクトリはありません で、スクリプトのファイル名が一致していないのは何故なのでしょうか? あと本当にperlのパスの記述があっているのかわかりませんが、 # perl ./im_gbook.cgi で、そのスクリプトは実行できるのでしょうか。 ちなみにrootで作業されていますが、それはあまりよくないですよ。
補足
tmp.cgiはeucで改行がLFのものです。 一歩前進しました。行末に;が抜けてるところを発見しました。 これでtmp.cgiはコマンドラインでは動くようになりましたが ブラウザで見ると文字化けしてしまいます。 # nkf -cs tmp.cgi > im_gbook.cgi # chmod +x im_book.cgi とやると、コマンドラインでは文字化けしてほとんど読めず、 ブラウザではやはりError 500になってしまいます。
- misoka
- ベストアンサー率35% (56/160)
No.2で回答したmisokaです。 バックスラッシュが ¥ になってしまいました。 読み替えてください。 No.1のご回答のとおり、いちどコマンドラインからCGIをperl してみるといいと思います。
- misoka
- ベストアンサー率35% (56/160)
print "Content-type: text/html¥n¥n" を出力する前に、 何かが出力されてしまっているとかいうことではありませんか?
- marimo_cx
- ベストアンサー率25% (873/3452)
そもそもコマンドラインでは動くのでしょうか?
補足
[root@ice imGBOOK]# ./im_gbook.cgi : bad interpreter: そのようなファイルやディレクトリはありません [root@ice imGBOOK]# となります。perlのインストールされているディレクトリを確認しましたが、 ちゃんと正しく記述されています。
補足
> あと念のためにパーミッションは705になっているのでしょうか? なってませんでした。(^_^;) 一応動くようになりました。大前進です。パチパチ~!! ただし、文字化けしてます。 自分でわざわざブラウザで文字のエンコードをs-jisに直してやれば見えるようになるのですが、 リロードするとまた文字化けし、ブラウザの設定は西ヨーロッパ(ISO)にもどってしまいます。 なぜでしょう?