プロが教える店舗&オフィスのセキュリティ対策術

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です。

A 回答 (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」を吐くのではないでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/04/09 12:37

手元の環境で質問文のCプログラムを試してみましたがとくに問題ありませんでした。



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

この回答への補足

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

補足日時:2006/04/09 12:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!