- ベストアンサー
他のページを見ましたが「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です。
- みんなの回答 (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」を吐くのではないでしょうか?
その他の回答 (1)
- osamuy
- ベストアンサー率42% (1231/2878)
手元の環境で質問文のCプログラムを試してみましたがとくに問題ありませんでした。 お使いの環境の問題と思われますので、ScriptLogをとってみるとか、CGIプログラムのstdoutやstderrを別途ファイルに保存するラッパーをかましてみるとか試してみては。 それと、/var/log/messagesに何か出てないかとか、core dumpが残ってないかとかCGI以外のところについて調査してみては。
補足
お騒がせしました。 ディレクトリのパーミッションが間違っていた様です。 755に設定したら動くようになりました。
お礼
ありがとうございました。 No.1さんへの補足の処置で動きました。