アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんは。CGIについて質問させて下さい。

現象:
C言語でCGIを作成し、ローカルで動作しているApacheで
動作確認をしようとしたところ、
「Internal Server Error」が出てしまいました。

質問:
上記の現象が起こったのですが、C言語でCGIを実行するには
なにが足りないでしょうか?

環境:
OS:WindowsXP
Webサーバ:Apache 2.0.61
Cコンパイラ:gcc 3.4.4(cygwin)

状態:
○「http://localhost:8080/」にアクセスすると「あなたの予想に反して・・・」画面は見れます。
○「http://localhost:8080/cgi-bin/test.cgi」にアクセスすると、「Internal Server Error」が表示されます。
○httpd.confの設定値(デフォルトから修正した部分)
・ServerName 127.0.0.1:8080
・<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin">内
Options none → Options ExecCGI
・#AddHandler cgi-script .cgi → AddHandler cgi-script .cgi
○Apacheのerror.log
~[error] [client 127.0.0.1] Premature end of script headers: test.cgi
○test.cgiのコンパイル前ソース
---ここから
#include <stdio.h>
int main(void){
 printf("Content-Type: text/html\n\n");
 printf("<html><body>Hello, World!</body></html>");
 return 0;
}
---ここまで
○test.cgiはcygwinにて標準出力を確認済み。

・・・ちなみにperlでCGIを作成すると表示されます。
(ActivePerlインストール済み)
perl側のソース
---ここから
#! c:/perl/bin/perl
print "Content-Type: text/html\n\n";
print "<html><body>";
print "Hello, CGI!";
print "</body></html>"
---ここまで

なにかおかしな点がございましたらご指摘をお願い致します。

A 回答 (1件)

特に知識はないのですが、質問だけさせてください。



cygwin上のgccでコンパイルして、cygwin上で動かすと動くことを確認した、と読みました。
すると、もしコマンドプロンプト(cmd.exe)から動かしたら動くのでしょうか?
gccのオプションを変える、もしくは、cygwinのsetup.exeでインストールするgccの種類を変更するなどして
クロスコンパイル的なことをしないと動かないんじゃないか、ということを考えました。

mingwとか何とか、そんなのを探すと何か進むんじゃないかと思いました
http://www.geocities.jp/turtle_wide/tools/gccwin …
    • good
    • 0
この回答へのお礼

seta_takahiroさんご回答ありがとうございます。
申し訳ないのですが、質問の後も調べておりまして、
先ほど解決してしまいました。

原因はCygwinのgccでコンパイルしたのがいけなかったです。
実はCygwinではいけないのかな?と思って、
VisualC++でもコンパイルしていたのですが、
Debugモードでコンパイルしていたのがいけなかったようです。
Releaseモードでコンパイルしたら問題なく動きました。

あと、seta_takahiroさんにご指摘された
コマンドプロンプトからcygwinで作成したcgiを実行すると、
「cygwin1.dllが見つからなかったため。・・・」と言うエラーが出ました。
Windowsで使用するにはWindows用にコンパイルしないといけなかったんですね。

ありがとうございました。

お礼日時:2008/01/05 01:48

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