※ ChatGPTを利用し、要約された質問です(原文:C言語で作成したCGIにて「Internal Server Error」)
C言語で作成したCGIにて「Internal Server Error」が発生する原因とは
このQ&Aのポイント
C言語で作成したCGIにて「Internal Server Error」が発生してしまう問題について質問です。
CGIをC言語で作成し、ローカルのApacheで動作確認した際に「Internal Server Error」が表示される問題が発生しました。
質問者はC言語で作成したCGIを動作させるために必要な設定や修正が不足しているのではないかと疑っています。
C言語で作成したCGIにて「Internal Server Error」
こんばんは。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>"
---ここまで
なにかおかしな点がございましたらご指摘をお願い致します。
お礼
seta_takahiroさんご回答ありがとうございます。 申し訳ないのですが、質問の後も調べておりまして、 先ほど解決してしまいました。 原因はCygwinのgccでコンパイルしたのがいけなかったです。 実はCygwinではいけないのかな?と思って、 VisualC++でもコンパイルしていたのですが、 Debugモードでコンパイルしていたのがいけなかったようです。 Releaseモードでコンパイルしたら問題なく動きました。 あと、seta_takahiroさんにご指摘された コマンドプロンプトからcygwinで作成したcgiを実行すると、 「cygwin1.dllが見つからなかったため。・・・」と言うエラーが出ました。 Windowsで使用するにはWindows用にコンパイルしないといけなかったんですね。 ありがとうございました。