-PR-
解決済み

apache でバイナリのCGIを動かすには

  • 暇なときにでも
  • 質問No.50994
  • 閲覧数316
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 44% (44/99)

apache でバイナリのCGIを動かすにはどうすればよいのでしょうか?
(なお、プログラム自体に問題は決してありません。『HTTPD』を使うと問題なく動作します)

OS:WIN98

C++バイナリのCGIを呼び出すと下記エラーとなります。

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please .... the error.
More ... log.
-
Apache/1.3.12 Server at http://127.0.0.2/ Port 80


最終アクセスログ
127.0.0.1 - - [12/Mar/2001:23:20:27 +0900] "GET /ab.cgi HTTP/1.1" 500 610

最終エラーログ
[Mon Mar 12 23:20:25 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/www.homepage/kokucho81/ab.cgi

apache の httpd.conf と httpd.conf.default との比較

** httpd.conf
ServerName http://127.0.0.2/

** httpd.conf.default
#ServerName new.host.name

** httpd.conf
DocumentRoot "E:/WWW.HOMEPAGE/KOKUCHO81"

** httpd.conf.default
DocumentRoot "C:/Apache/htdocs"

** httpd.conf
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None

** httpd.conf.default
<Directory />
Options FollowSymLinks
AllowOverride None

** httpd.conf
<Directory "E:/WWW.HOMEPAGE/KOKUCHO81">
** httpd.conf.default
<Directory "C:/Apache/htdocs">

** httpd.conf
Options Indexes FollowSymLinks ExecCGI

** httpd.conf.default
Options Indexes FollowSymLinks MultiViews

** httpd.conf
AddHandler cgi-script .cgi

** httpd.conf.default
#AddHandler cgi-script .cgi


そもそも、設定が足りてないんでしょうか?
apacheを良く使う方、よろしくお願いします。m(_ _)m
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル8

ベストアンサー率 46% (22/47)

見たところおかしいところはなさそうなのですが。

Apache1.3.12をWin98上で使っていますが、同じようなことをしてもまるで問題なく動作しています。
試しに同じことをやってみましたが問題ありませんでした。コンパイラはVC6を使用しました。
参考にならなくてスミマセン。
お礼コメント
kokucho81

お礼率 44% (44/99)

ああ~、それでわかりました!!!!
Apacheの設定も間違っていないし、プログラムも間違ってはいなかったのです!!!

私が使用しているのは1994年型の Borland C++ 4.02j です。
(VC++6.0 Enterpriseも持ってはいるのですが・・・BC++がお気に入りで・・・)

BC++は同じプログラムソースに対して、
DOS16スタンダード DOS16オーバレイ
WIN32コンソール WIN32グイ とできるのですが、普段からCGIプログラムではDOS16スタンダートを使用していました。これが原因だったみたいです。
『Nakata氏の An HTTP D』はかなりWindowsに対して高い柔軟性があるみたいで16bitプログラムでも問題なくCGIとして動くのですが、Apache(1.3.12)はどうやら動かないようです。WIN32コンソールとしてコンパイル・リンクすると、あっけなく動きました。

以前Apacheを使用していたときには、C++系のプログラムCGIがApacheでも動いていたのでおかしいな~と思っていたのですが、そのときには『Cygwin』でのG++で普通にコンパイルしていたので、自動的にWin32コンソールとなっていたのでApacheでも問題なく動いていたのでしょう。
投稿日時 - 2001-03-13 22:44:47
関連するQ&A
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル11

ベストアンサー率 58% (114/195)

HTTPDっていうのがどのHTTP Daemonの事を挿すのかわかりませんが・・・(apacheもソースからmakeするとhttpdで出来上がるし・・・) そのab.cgiを通常のプログラムとして実行してみた場合、HTTP header(ContentType: text/htmlとか色々)は吐かれていますか? また、吐かれたheaderとデータ本体の間は<CR><LF>( ...続きを読む
HTTPDっていうのがどのHTTP Daemonの事を挿すのかわかりませんが・・・(apacheもソースからmakeするとhttpdで出来上がるし・・・)

そのab.cgiを通常のプログラムとして実行してみた場合、HTTP header(ContentType: text/htmlとか色々)は吐かれていますか?
また、吐かれたheaderとデータ本体の間は<CR><LF>(キャリッジリターン、ラインフィード、確か0x0dと0x0aだったと思います)で区切られてますか?

error logの出力からはそのように読めるので、一応確かめてみてください
補足コメント
kokucho81

お礼率 44% (44/99)

ちゃんと正しく書きたかったのですが、ここの投稿は字数が800字以上書けないらしくって、あっちこっち省いているうちに、わかりにくい文章になってしまいました。

HTTPD っていうのは『nakata氏のAn HTTP』サーバーです。

>そのab.cgiを通常のプログラムとして実行してみた場合、HTTP header(ContentType: text/htmlとか色々)は吐かれていますか?
また、吐かれたheaderとデータ本体の間は<CR><LF>(キャリッジリターン、ラインフィード、確か0x0dと0x0aだったと思います)で区切られてますか?

CGI自体に問題はないとおもいます。一応以下にソースを掲載しますが…
以下ソース
#include <iostream.h>
int main(){
cout << "Content-type: text/html\n\n";
cout << "<html><body>\n"
<< "Hello World"
<< "</body></html>\n";
return 0;
}
実際にコンパイル済みものをローカルで上記のAn HTTPDサーバーでCGIとして呼び出しても問題なく動きますし、ソース自体をレンタルサーバー(Apache+FreeBSD)のTELNETでGCCコンパイルしたものも問題なく動きます。

ローカルのapacheの設定が、間違っているのだと思います。
PERL系CGIはすぐ動くようになるのに…
どう間違っているのでしょうか?
投稿日時 - 2001-03-13 02:11:49


  • 回答No.2
レベル11

ベストアンサー率 58% (114/195)

cout使ってらっしゃるようですが、確かcoutってプログラム終了時にバッファのフラッシュアウトって保証してましたっけ? coutの最後に << endl;としても駄目でしょうか? ...続きを読む
cout使ってらっしゃるようですが、確かcoutってプログラム終了時にバッファのフラッシュアウトって保証してましたっけ?
coutの最後に
<< endl;としても駄目でしょうか?
補足コメント
kokucho81

お礼率 44% (44/99)

<< endl;としても駄目でしょうか?
ダメです。

>cout使ってらっしゃるようですが、確かcoutってプログラム終了時にバッファのフラッシュアウトって保証してましたっけ?

おっしゃるように、該当ステップで吐き出されるとは限りませんが、プログラム終了時にはちゃんと吐き出されると思いますが。
(それにもちろん、printf分を使ってもダメです)

レンタルサーバー上の『apache』や『An HTTPD』で動く限り、プログラムソースの問題という可能性はないとおもいます。

エラーが出る前の不思議な現象として、かならず、フロッピーディスクドライブを読みにいって何かを探そうとしていますね。
投稿日時 - 2001-03-13 17:20:12
お礼コメント
kokucho81

お礼率 44% (44/99)

ううっ(涙)
お世話になりました。
今回は以外な盲点でした。

でも、いろいろapacheの.confを調べる機会になりましたので、
ちょっとapacheの勉強になりました。

ありがとうございました。
投稿日時 - 2001-03-13 22:53:06
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ