CGIとC++の関係がよくわかるHPなどがあれば教えていただけないでしょうか?
Apacheをつかおうと計画をしています。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

サイトやページの紹介ではありませんが、簡単に説明します。



CGI は httpサーバプログラム(例えば、Apache)の外部プロセスとして
起動されます。

その外部プロセスとして起動されるプログラムは、作り易い / 作り難いを
別にすると、最低限以下のふたつを要求されます。

・標準出力に文字を出力できる
・GET を使うなら、環境変数を、POST を使うなら標準入力を参照することができる

このふたつだけを満たせば、どんな言語でも CGI を作ることが出来ます。

C++ は、上記二つのことが出来るので CGI を作る言語になりえます。

簡単に書くと「 C++ で CGI を作れます」ってことです。それ以上の関係はないです。
    • good
    • 0
この回答へのお礼

ありがとうございます。C++のロジックの組み方でCGIにもなるってことですね。大変勉強になりました。

お礼日時:2001/06/18 17:09
    • good
    • 0
この回答へのお礼

ありがとうございます。早速使わせていただきます。

お礼日時:2001/06/18 17:14

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

このQ&Aと関連する良く見られている質問

Qapacheでcgiがうまく動かない。cgiが認識されていない?

すいません、多分基本的な所なのですが、
どうしても分からないので質問させてください。
■環境------------------------------
・windowsXP sp2
・apache1.3.33C:\Program Files\Apache Group\Apache
 現在の状態:html表示可能。httpd.confを変更
・perl5.6.1c:\perl
 現在の状態:PPMにてimagemagick,DBI,DBD-MySql(だっけ)をインストールしている
・php5.0.4c:\php
・mysql4.02C:\mysql
■httpd.confの変更箇所--------------------------------
337
Options Indexes FollowSymLinks MultiViews

Options Indexes FollowSymLinks ExecCGI MultiViews

538
#!c:/program files/perl/perl

#!C:/Perl/bin/perl

720以降に追加
AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .pl

825以降に追加
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
■printenv.plの内容--------------------------------
#!C:/Perl/bin/perl
##
## printenv -- demo CGI program which just prints its environment
##

print "Content-type: text/plain\n\n";
foreach $var (sort(keys(%ENV))) {
$val = $ENV{$var};
$val =~ s|\n|\\n|g;
$val =~ s|"|\\"|g;
print "${var}=\"${val}\"\n";
}
--------------------------------------------------
上記のような環境で、いまPERLの動作確認を行っています。

http://localhost/cgi-bin/printenv.pl
http://localhost/cgi-bin/printenv.pl

PLファイルを指定しても実行されず、ダウンロードされてしまいます。
cgiに拡張子を変えても同じでした。

エラーというわけでもない為、エラーログにも何もかかれません。
何が問題なのでしょうか?

すいません、多分基本的な所なのですが、
どうしても分からないので質問させてください。
■環境------------------------------
・windowsXP sp2
・apache1.3.33C:\Program Files\Apache Group\Apache
 現在の状態:html表示可能。httpd.confを変更
・perl5.6.1c:\perl
 現在の状態:PPMにてimagemagick,DBI,DBD-MySql(だっけ)をインストールしている
・php5.0.4c:\php
・mysql4.02C:\mysql
■httpd.confの変更箇所--------------------------------
337
Options Indexes FollowSymLinks MultiViews
...続きを読む

Aベストアンサー

1.
htdocsではなく、cgi-binでの実行のようなので
ScriptAlias のコメントアウトははずしました?

2.
http://127.0.0.1/cgi-bin/printenv.pl
ではどうでしょう
Windowsでしたら、たまにIISが関係してくるようですよ

QC++でEXEを作成してCGI-BINで動作させてますが、ブラウザからの入力を受ける方法がわからん

自前のEXEでTESTとブラウザに表示させることに成功しました

=========--


#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{

cout << "Content-type: text/plain" << endl;
cout << endl;
cout << "test" << endl;
return 0;
}


==============---

さて、POSTメソッドで受けた内容や、ウラウザの種類やREFERなどはどうやってEXEで取得するのかがわかりません。教えてください。

Aベストアンサー

getenv()を使います。
CGIが起動したとき、サーバーから送られたデータも環境変数に入ってますから、それを呼び出して使います。
 簡単な例は
C言語でCGI ( http://pub.cozmixng.org/~rwiki/index.rb?cmd=view;name=C%B8%C0%B8%EC%A4%C7CGI )
 の中ほどに、

環境変数のおもなものは
Enviroment Variable and FORM,COOKIE ( http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi )

詳細は
CGIプログラムに渡す環境変数 ( http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3M1501/EM150111.HTM )
 とか

QapacheのCGI設定

 pc9821にFreeBSD(98)をいれapache1.3を起動させています。cgiはlight.cgiというソフトをつかっています。なかなかcgiがうまくいきません。参考ページには
public_html / index.html (トップページ)
|
+-- bbs / light.cgi [755]
| admin.cgi [755]
・・・・(省略)
+-- lock [777] /
|
+-- past [777] / 0001.cgi [666]
とかかれていますが、実際に私のサーバーにはpublic_htmlというフォルダは存在していなくて
/usr/local/www/cgi-binにbbsというフォルダをつくり
あとは上のようにしています。またindex.htmlは/usr/local/www/dataのなかにいれて表示してWebサーバーとしてはたらいています。またapacheの/usr/local/etc/apacheのhttpd.confは
関係ありそうな行だけあげると
ServerRoot "/usr/local"
DocumentRoot "/usr/local/www/cgi-bin"
<Directory "/usr/local/www/cgi-bin/bbs">
Options Indexes FollowSymLinks MultiViews
<location "/cgi-bin/">
Options ExecCGI
AllowOverride AuthConfig Limit
Order allow ,deny
Allow from all
</Location>
<IfModule mod_mime.c>
TypesConfig /usr/local/etc/apache/mime.types
ADDHandler cgi-script .cgi
</IfModule>
ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/"
<Directory "/usr/local/www/cgi-bin/bbs">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi
どこがおかしいのかおしえていただけないでしょうか?

 pc9821にFreeBSD(98)をいれapache1.3を起動させています。cgiはlight.cgiというソフトをつかっています。なかなかcgiがうまくいきません。参考ページには
public_html / index.html (トップページ)
|
+-- bbs / light.cgi [755]
| admin.cgi [755]
・・・・(省略)
+-- lock [777] /
|
+-- past [777] / 0001.cgi [666]
とかかれていますが、実際に私のサーバーにはpublic_htmlというフォルダは存在していなくて
/usr/local/www/cgi...続きを読む

Aベストアンサー

PC9821にApacheをインストールしたことはないので外しているかもしれませんが・・・

> とかかれていますが、実際に私のサーバーにはpublic_htmlというフォルダは存在していなくて
Apacheインストール直後では、
ディレクトリ htdocs が public_html に該当します。
CGIファイルは cgi-bin に置くことでデフォルトで動作します。

httpd.confにはデフォルトで ScriptAlias の記述がありますが、
この記述があると cgi-bin に置いたファイルしかCGIとして認識しなくなります。
ですので、ディレクティブごとコメントアウトしてみてください。

Qapache1.3とperlでCGI

超初心者です。
windows XPでapache1.3 と active perl 5.1.2をインストールして、
CGIを動作させたいと考えています。

http://localhostを入力してapacheの起動画面は表示されていること
を確認しました。

その後httpdconfに下記を追加しました。
AddHandler cgi-script .cgi .pl

AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .pl

<Directory "C:/Program Files/Apache Group/Apache/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>

C:\Program Files\Apache Group\Apache\cgi-binに既存で存在する
printenv.plを実行しようとするとファイルのダウンロードの画面が出てきて
実行されません。printenv.plは下記のようにperl.exeへのパスだけ変更しました。

#! C:/Perl/bin/perl
##
## printenv -- demo CGI program which just prints its environment
##

print "Content-type: text/plain\n\n";
foreach $var (sort(keys(%ENV))) {
$val = $ENV{$var};
$val =~ s|\n|\\n|g;
$val =~ s|"|\\"|g;
print "${var}=\"${val}\"\n";
}

どうすればCGIが実行できるようになるのでしょうか?
ご教授ください。よろしくお願い致します。

超初心者です。
windows XPでapache1.3 と active perl 5.1.2をインストールして、
CGIを動作させたいと考えています。

http://localhostを入力してapacheの起動画面は表示されていること
を確認しました。

その後httpdconfに下記を追加しました。
AddHandler cgi-script .cgi .pl

AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .pl

<Directory "C:/Program Files/Apache Group/Apache/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
...続きを読む

Aベストアンサー

LoadModule cgi_module modules/mod_cgi.so
のコメントを外してありますか?

QApacheでcgiができないんです。

以下のホームページと同じように、設定したのですが。。。

http://www.futomi.com/lecture/apache/config.html

下のcgiは実行できます。
#!/usr/local/bin/perl

print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>Apache</TITLE>\n";
print "</HEAD>\n";
print "<BODY>\n";
print "<H2>Welcome to my computer, Apache Server!</H2>\n";
print "</BODY>\n";
print "</HTML>\n";

しかし、下のcgiは実行できません。htmlファイル、cgiファイル共に、あるホームページからコピペしたので、間違いないと思います。ここではhtmlファイルは書きませんが、以下のURLです。
http://www2j.biglobe.ne.jp/~apollo/server/apacuse.html


#!/usr/local/bin/perl

$countfile= "count.dat";

open(IN, "< $countfile");
$count = <IN>;
close(IN);

$count++;

open(OUT,"> $countfile");
print OUT $count;
close(OUT);

print "Content-type: text/plain\n\n";
print $count;

以下のホームページと同じように、設定したのですが。。。

http://www.futomi.com/lecture/apache/config.html

下のcgiは実行できます。
#!/usr/local/bin/perl

print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>Apache</TITLE>\n";
print "</HEAD>\n";
print "<BODY>\n";
print "<H2>Welcome to my computer, Apache Server!</H2>\n";
print "</BODY>\n";
print "</HTML>\n";

しかし、下のcgiは実行できません。htmlファイル、cgiファイル共...続きを読む

Aベストアンサー

AddHandler cgi-script .cgi

で、hoge.cgiしかCGIとして実行してくれないみたいだよ

SSIとして実行(Include)できるには、あと2、3ステップ必要です。

<!--#include virtual=

でやればあとはできるのでは?
#execの方はパラメータの渡しとか、相対パスがコマンドライン仕様なので
virtualが使えるならそっち使った方がええと思う。


このカテゴリの人気Q&Aランキング

おすすめ情報