• ベストアンサー

他のページを見ましたが「Premature end of script headers」について

C++でCGIを記述しています。 「Premature end of script headers」がでてとれません。 サーバーにログインして、その環境でコンパイルを実施しています。 他のWebページも参照しましたが、「転送のモードが云々」とか、perlのパスが云々とか記述されていますが、関係ないと思っています。 ソースは ------ここから #include <stdio.h> main() { printf("Content-type: text/html\n\n"); printf("test"); } -----ここまで です。 text/htmlの後の改行を増やしたりtestの後に改行をつけたりtype:の後のスペースを取ったりいろいろしましたが、状況は変わりません。 何をどうすればよいのでしょうか。 なお、OSはFreeBSD 4です。

質問者が選んだベストアンサー

  • ベストアンサー
  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.2

Debian Linuxの環境で追試しましたが、問題なく表示されています。 gcc test.c -o test.cgi とコンパイルしたものをWeb pageに置きアクセスしました。 コードの問題があるのではなく、CGIが実行できない環境になっていて、test.cgiが実行されずにバイナリとして表示されようとして「Premature end of script headers」といわれているのではないでしょうか? perlで書いた、 #! /usr/bin/perl #↑これは環境に合わせてください print "Content-type:text/html\n\n"; print "test"; は、実行できますか?やはり「Premature end of script headers」を吐くのではないでしょうか?

jotahachi
質問者

お礼

ありがとうございました。 No.1さんへの補足の処置で動きました。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

手元の環境で質問文のCプログラムを試してみましたがとくに問題ありませんでした。 お使いの環境の問題と思われますので、ScriptLogをとってみるとか、CGIプログラムのstdoutやstderrを別途ファイルに保存するラッパーをかましてみるとか試してみては。 それと、/var/log/messagesに何か出てないかとか、core dumpが残ってないかとかCGI以外のところについて調査してみては。

jotahachi
質問者

補足

お騒がせしました。 ディレクトリのパーミッションが間違っていた様です。 755に設定したら動くようになりました。

関連するQ&A