Common Gateway Interface(CGI)とは何ですか?


745

CGIはCommon Gateway Interfaceです。名前が示すように、それはすべての「共通」ゲートウェイインターフェイスです。それは名前からとても些細で素朴です。私はこれを理解していると感じ、この言葉に出会うたびに感じました。しかし率直に言って、私はしませんでした。私はまだ混乱しています。

私はWeb開発の経験を持つPHPプログラマーです。

ページのユーザー(クライアント)リクエスト---> webserver(-> embedded PHP interpreter)---->サーバー側(PHP)スクリプト---> MySQLサーバー。

ここで、私のPHPスクリプトがMySQLサーバー、MATLABサーバー、その他のサーバーから結果をフェッチできるとしましょう。

では、PHPスクリプトはCGIになりましたか?Webサーバーと他のすべてのサーバー間のインターフェースのためですか?知りません。CGIをテクノロジーと呼んだり、CGIをプログラムや他のサーバーと呼んだりすることもあります。

  • CGIとは正確には何ですか?

  • /cgi-bin/*.cgiどうしたの?これどうしたの?cgi-binサーバー上のこのディレクトリが何のためにあるのかわかりません。なぜ* .cgi拡張子が付いているのかわかりません。

  • Perlが常に邪魔になるのはなぜですか。CGI&Perl(言語)。また、これら2つがどうなっているのかもわかりません。ほとんどの場合、私はこの2つを「CGIとPerl」の組み合わせで聞いています。この本は、Perlを使用したCGIプログラミングの優れた例です。「PHP / JSP / ASPによるCGIプログラミング」をしないのはなぜですか?私はそのようなものを見たことがない。

  • CでのCGIプログラミングは、私をとても混乱させます。「Cで」?? マジ?なんて言えばいいのか分からない。私はただ混乱しています。「Cで」?? これはすべてを変えます。プログラムをコンパイルして実行する必要があります。これは私のWebプログラミングに対する見方を完全に変えます。いつコンパイルしますか?プログラムはどのように実行されますか(マシンコードになるため、独立したプロセスとして実行する必要があるため)。どのようにWebサーバーと通信しますか?IPC?ソケットプログラミングを使用してすべてのサーバー(私の例ではMATLAB&MySQL)とのインターフェースをとっていますか?道に迷いました!!

  • CGIは非推奨になり、使用されなくなったと人々は言っています。そうですか?最新のアップデートは何ですか?

かつて、HTTP PUTリクエストにWebサーバー(Apache HTTPD)へのアクセスを許可しなければならない状況に遭遇しました。その長いバック。だから、私が覚えている限り、これは私がやったことです:

  1. Apache HTTPDの構成ファイルを編集して、すべてのHTTP PUTリクエストを一部に渡すようにWebサーバーに指示しました put.php(このPHPスクリプトを作成する必要がありました)。

  2. put.phpを実装してリクエストを処理します(ファイルを上記の場所に保存します)

私はCGIスクリプトを書いたと人々は言った。真剣に、私は彼らが話していることの手がかりがありませんでした。

  • 私は本当にCGIスクリプトを書いたのですか?

私の混乱が何であるか理解していただければ幸いです。(自分自身がどこで混乱しているかわからないからです)。できるだけ簡単に回答してください。派手な専門用語は本当に理解できません。少なくともこの場合はそうではありません。

編集:

この素晴らしいチュートリアル「CGIプログラミングは簡単です!」を見つけました-CGIチュートリアル。概念を可能限り簡単に説明しています。この記事を読んだ後、「CでのCGIプログラミング入門」を読んで、実際のコードサンプルで理解を深めることができます。このチュートリアルへのリンクをウィキペディアの記事に追加しました:http : //en.wikipedia.org/wiki/Common_Gateway_Interface


9
Cobolで書かれたCGIはすでに見たことがあります。冗談じゃない!
Luc M

@Luc M.興味がある。どのCGIを意味しますか(LINQにレイキャスターが存在する場合...)?
Joe

15
@claws:主に古い学校の人々は、実際の実行方法に関係なく、Webサーバー経由で実行された任意のコードをCGIと呼びます。あなたが実際に書いたのは、CGIプロトコルを介して実行される場合とされない場合があるPHPスクリプトです。あなたの混乱は、CGIのあいまいな意味、コードを実行するプロトコル、およびプロトコルを介して実行されるコード(後で、Webで実行されるコードを意味するように一般化された)
Vinko Vrsalovic

1
90年代半ばに、私はHyperCardでいくつかのCGIスクリプトを書いた
Neal Davis

@Joe通知を受け取ったことはありません。今日、この投稿をもう一度読んで、あなたの質問を見ました。CGIはOpenVMSで独立した実行可能ファイルとして作成されました(フレームワークは含まれていないか、サードパーティのアプリケーションではありません...)
Luc M

回答:


427

CGIは、アプリケーションとの間でデータをやり取りする方法をウェブサーバーに伝えるインターフェースです。具体的には、要求情報が環境変数(要求タイプ、リモートIPアドレスなど)で渡される方法、要求本体が標準入力を介して渡される方法、および応答が標準出力を介して渡される方法について説明します。詳細については、CGI仕様を参照してください。

画像を使用するには:

user (client) request for page ---> webserver ---[CGI]----> Server side Program ---> MySQL Server.

すべてではないにしても、ほとんどの場合、Webサーバーはプログラムを「CGI」として実行するように構成できます。これは、リクエストを受け取ると、Webサーバーが特定のプログラムにデータを転送し、いくつかの環境変数を設定し、標準入力と標準出力を介してパラメーターをマーシャリングすることで、プログラムが検索する場所と場所を認識できるようにすることを意味します。

主な利点は、Webサーバーとプログラムの両方がCGIの動作方法を知っていれば、任意の実行可能コードをWebから実行できることです。これが、通常のCGI対応のWebサーバーを使用してCまたはBashでWebプログラムを作成できる理由です。つまり、ほとんどのプログラミング環境では、標準入力、標準出力、および環境変数を簡単に使用できます。

あなたのケースでは、PHPに固有の別のスクリプトとWebサーバー間の通信手段を使用した可能性があります。これは、質問でよく述べているように、mod_phpと呼ばれる組み込みインタープリターです。

だから、あなたの質問に答える:

CGIとは正確には何ですか?

上記を参照。

/cgi-bin/*.cgiの大きな問題は何ですか?これで元気?サーバー上のこのcgi-binディレクトリが何であるかわかりません。なぜ* .cgi拡張子が付いているのかわかりません。

これはcgiプログラムの伝統的な場所です。多くのWebサーバーには、すべてのバイナリをCGIプログラムとして実行するように事前構成されたこのディレクトリが付属しています。.cgi拡張子は、CGIを通じて機能することが期待される実行可能ファイルを示します。

Perlが常に邪魔になるのはなぜですか。CGI&Perl(言語)。また、この2つがどうなっているかわからない。ほとんどの場合、私はこの2つを「CGIとPerl」の組み合わせで聞いています。この本は、Perlを使用したCGIプログラミングのもう1つの優れた例です。「PHP / JSP / ASPを使用したCGIプログラミング」ではありません。私はそのようなものを見たことがない。

Perlは古く(CGIがすでに古くなっていたPHP、JSP、ASPよりも古いため、CGIが新しいときにPerlが存在しました)、CGIを介して動的なWebページを提供する非常に優れた言語として有名になりました。現在、PerlをWebサーバーで実行する他の方法、主にmod_perlがあります。

CでのCGIプログラミングは、これをよく混乱させます。Cで?? マジ?なんて言ったらいいのかわからない。私はただ混乱しています。「Cで」??これはすべてを変更します。プログラムをコンパイルして実行する必要があります。これにより、Webプログラミングの私の見方が完全に変わります。いつコンパイルするのですか?プログラムはどのように実行されますか?マシンコードなので、独立したプロセスとして実行する必要があります。どのようにWebサーバーと通信しますか?IPC?とソケットプログラミングを使用してすべてのサーバー(私の例ではMATLAB&MySQL)とインターフェイスしますか?失われました!!

実行可能ファイルを1回コンパイルすると、Webサーバーがプログラムを実行し、要求内のデータをプログラムに渡し、受信した応答を出力します。CGIは、要求ごとに1つのプログラムインスタンスが起動されることを指定しています。これが、今日のCGIが非効率的で古くなっている理由です。

彼らは、CGIは非推奨であると言います。そのもう使用されていません。そうですか?最新のアップデートは何ですか?

CGIは、パフォーマンスが最優先ではなく、コードを実行する簡単な手段が必要な場合にも使用されます。これは前述の理由により非効率的であり、Web環境でプログラムを実行するより近代的な手段があります。現在最も有名なのはFastCGIです。


24
具体的には、要求情報が環境変数(要求タイプ、リモートIPアドレスなど)で渡される方法、要求本体が標準入力で渡される方法、および応答が標準出力で渡される方法について説明します。詳細については、CGI仕様(hoohoo.ncsa.illinois.edu/cgi)を参照してください。
daf

3
Server side Programあなたの図で私のPHPスクリプトであると仮定します。それで、CGIプログラミングをしたことはありませんか?なぜなら私はウェブサーバーと私のPHPスクリプトの間にあるものを書いたことがないからです。くそー!!これは私を殺します。

4
PHPは依然としてCGIプロトコルに大きく基づいており、$ _ SERVERのコンテンツのほとんどはCGI仕様に基づいています。また、「CGIプログラミング」は常に、プロトコル自体の実装ではなく、プログラムが要求を処理することを意味していました。あなたがPHPで何をしているのかを1993年のWebプログラミングのパイオニアに説明した場合、彼はそれをCGIプログラミングの高度な(おそらく弱々しい)形式だと考えます。
Michael Borgwardt、2010年

5
@Michael:しかし、mod_phpを介して実行する場合は、CGIではありません(それに基づく場合でも)。また、CGIはプロトコルとそれを介して実行されるスクリプトの両方を指すことに同意します。
Vinko Vrsalovic、2010年

2
@Vinko Vrsalovic:CGIがPerl、C、または他の言語がWebサーバーで実行するためのインターフェイスである場合、Apacheで実行するためにPHPが使用するインターフェイスはどれですか????????? そしてPHPはCGI仕様の下にありますか?
hardik、2011

63

CGIとは正確には何ですか?

Webサーバーが(たとえば、ファイルではなく)プログラムからデータを取得するための手段。

/cgi-bin/*.cgiの大きな問題は何ですか?

大きな問題ではない。それは単なる慣習です。

サーバー上のこのcgi-binディレクトリが何であるかわかりません。なぜ* .cgi拡張子が付いているのかわかりません。

サーバーはファイルをどう処理するかを知っている必要があります(つまり、ファイルを単に提供するものではなく、実行するプログラムとして扱います)。.html拡張子があると、text / htmlコンテンツタイプを使用するように指示されます。.cgi拡張子を付けると、プログラムとして実行するように指示されます。

実行可能ファイルを別のディレクトリに保持することで、サーバーが正しく構成されていない場合に、不正なファイルを実行したり、CGIプログラムを生データとして提供したりすることに対する保護が強化されます。

Perlが常に邪魔になるのはなぜですか。

そうではありません。PerlはCGIと同時に大きくて人気がありました。

私は何年もPerl CGIを使用していません。私は長い間mod_perlを使用しており、最近はFastCGIでPSGI / Plackを使用する傾向があります。

この本は、Perlを使用したCGIプログラミングのもう1つの優れた例です。「PHP / JSP / ASPを使用したCGIプログラミング」ではありません。

CGIはあまり効率的ではありません。PHPとほぼ同時に、Webサーバーからプログラムと対話するためのより良い方法が登場しました。JSPとASP 、プログラムと通信するための異なる方法です。

CでのCGIプログラミングは、これをよく混乱させます。Cで?マジ?

それはプログラミング言語ですが、なぜですか?

いつコンパイルしますか?

  1. コードを書く
  2. コンパイル
  3. アクセスURL
  4. ウェブサーバーがプログラムを実行する

プログラムはどのように実行されますか(マシンコードになるため、独立したプロセスとして実行する必要があるため)。

独立したプロセスとして実行する必要はありません(CでApacheモジュールを作成できます)が、CGIの全体的な概念は、外部プロセスを起動することです。

Webサーバーとどのように通信しますか?IPC?

STDIN / STDOUTおよび環境変数— CGI仕様で定義されています。

ソケットプログラミングを使用してすべてのサーバー(私の例ではMATLAB&MySQL)とのインターフェースをとっていますか?

好きな方法でサポートされています。

彼らはCGIが減価償却されていると言います。そのもう使用されていません。そうですか?

CGIは非効率的で、遅く、シンプルです。滅多に使われませんが、使うとシンプルだからです。パフォーマンスがそれほど重要でない場合は、単純さは大きな価値があります。

最新のアップデートは何ですか?

1.1


1.コードを書く2.コンパイルする3. URLにアクセスする4. Webサーバーがプログラムを実行する || しかし、どのようにウェブサーバが知っている場所あなたがコンパイルされた実行可能プログラムを置きますか?実行する実行可能プログラム(それらの中で)をどのようにして知るのですか?
パチェリエ2015年

@Pacerier —静的ファイルが要求された場合にクライアントに送信する静的ファイルを認識するのと同じ方法。
クエンティン

41

CGIは、Webサーバー(HTTPサーバー)と特定の要求を処理するためのあるタイプの実行可能プログラムとの間のインターフェース仕様です。

要求の特定のプロパティをそのプログラムの環境に伝達する方法と、プログラムが応答をサーバーに伝達する方法と、サーバーが応答を「完了」させて元のHTTP要求に対する有効な応答を形成する方法について説明します。

しばらくの間、CGIはIETFインターネットドラフトであり、有効期限がありました。更新なしで期限切れになったため、CGIの「標準」はありませんでした。これは情報を提供するRFCですが、一般的な慣例を文書化したものであり、標準そのものではありません。rfc3875.txtrfc3875.html

CGIインターフェースを実装するプログラムは、ターゲットマシンで実行可能な任意の言語で記述できます。それらは環境変数と通常は標準入力にアクセスできなければならず、標準出力で出力を生成します

Cなどのコンパイルされた言語は、perlなどのスクリプト言語と同様に一般的に使用され、CGI環境へのアクセスを容易にするためにライブラリを使用することがよくありました。

CGIの大きな欠点の1つは、要求ごとに新しいプログラムが生成されるため、要求間の状態を維持することがパフォーマンス上の大きな問題になる可能性があることです。状態はCookieで処理されるか、URLでエンコードされる可能性がありますが、大きくなると、別の場所に格納し、エンコードされたURL情報またはCookieからキーイングする必要があります。次に、各CGI呼び出しは、ストアからストアされた状態をどこかでリロードする必要があります。

このため、リクエストとセッションへのインターフェースが非常にシンプルなため、Webサーバーとアプリケーション間の統合環境がはるかに普及しています。Apacheを使用した最新のPHP実装のような環境は、ターゲット言語をWebサーバーとより適切に統合し、httpリクエストを効率的に処理するために必要なリクエストオブジェクトとセッションオブジェクトへのアクセスを提供します。これらは、HTTPリクエストを処理する「プログラム」を作成するためのはるかに簡単で豊富な方法を提供します。

CGIスクリプトを作成したかどうかは、解釈に依存します。それは確かに1つの仕事をしましたが、スクリプトとサーバーの間のインターフェースが厳密にはCGIインターフェースではないモジュールとしてphpを実行するのはより一般的です。


1
わざわざ。私は他に答えがなかったときにこれを書き始めましたが、方法が呼ばれました。今ではリストの約8位です。今は削除するつもりはありません。後で戻って削除します。
CBベイリー

6
ねえ..削除しないでください。それはいくつかのことをより明確に言います。参考になりました。他の人もそれを見つけるかもしれません。:)
2010年

1
わかりました。少しおきましょう。しかし、誰かが「より良い」一節をより完全な答えの1つに組み込んだ方がいいでしょう。次に、より明確な答えが得られる可能性があります。
CBベイリー

18

CGIはRFC 3875で指定されていますが、これは元のNCSAドキュメントの後の「公式」コード化です。基本的に、CGIは、HTTPリクエストに関するデータをWebサーバーから処理するプログラム(任意のプログラム、任意の言語)に渡すためのプロトコルを定義します。仕様が作成された時点(1993年)では、ほとんどのWebサーバーには静的ページしか含まれていなかったため、「Webアプリ」は珍しい新しいものでした。cgi-bin静的コンテンツとは別のディレクトリで、末尾が.cgi

現時点では、ここにもPHPのような専用の「Webプログラミング言語」はなく、Cが支配的なポータブルプログラミング言語でした。そのため、多くの人々がCGIスクリプトをCで記述しました。しばらくの間、CGIはPerlとほぼ同義語になりました。その後、Javaサーブレット、PHP、その他多数が登場し、Perlの市場シェアの大部分を引き継ぎました。


PHPが「専用のWebプログラミング言語」である理由 PHPは汎用的な言語であり、人々はUIアプリにもそれを使用しています。
Pacerier

@Pacerier:Webページを生成するためのプログラミング言語として設計されており、ユーザーの99.9%がこれを使用しています。それもその中だ名前。他のものを主張することは、無意味な髪の分裂です。UIアプリ、科学計算、または組み込みプログラミングにそれを使用している場合、問題ありません。許可されていないと誰も言っていません。
Michael Borgwardt 2015年

13

ウィキペディアでCGIをご覧ください。CGIは、Webサーバーと外部プログラムまたはスクリプトとの間のプロトコルであり、入力を処理し、ブラウザーに送信される出力を生成します。

CGIは、Webサーバーとプログラムが通信するための単なる方法です。ここでは、サーバーがネットワーク接続とHTTPプロトコルを管理し、プログラムが入力を処理し、ブラウザーに送信される出力を生成します。CGIスクリプトは、基本的に、Webサーバーで実行でき、CGIプロトコルに従う任意のプログラムです。したがって、CGIプログラムは、たとえばCで実装できます。ただし、Cはタスクにあまり適していないため、これは非常にまれです。

/cgi-bin/*.cgiは、人々が一般的にCGIスクリプトを置く単純なパスです。Webサーバーは通常、デフォルトでそのパスからCGIスクリプトをフェッチするように構成されています。

CGIスクリプトはPHPにも実装できますが、すべてのPHPプログラムはCGIスクリプトではありません。WebサーバーにPHPインタープリターが組み込まれている場合(Apacheのmod_phpなど)、CGIフェーズは、Webサーバーとインタープリター間のより効率的な直接プロトコルによってスキップされます。

CGIスクリプトを実装したかどうかは、スクリプトがWebサーバーによってどのように実行されているかによって異なります。


12

CGIは基本的に、Webサーバーで構成されているすべてのインタープリターに要求を渡します。これには、Perl、Python、PHP、Ruby、Cなど、ほとんど何でもかまいません。Perlは、CGIに関連してよく見られるようになった当時、最も一般的なものでした。

CGIは死んでいません。実際、ほとんどの大規模なホスティング会社はmod_phpとは対照的にPHPをCGIとして実行しています。これは、mod_phpよりも低速でありながら、ユーザーレベルの設定やその他の機能を提供するためです。RubyとPythonも通常CGIとして実行されます。ここでの主な違いは、サーバーモジュールが実際のサーバーソフトウェアの一部として実行されることです。CGIと同様に、完全にサーバーの外部にあります。サーバーは、CGIモジュールを使用して、データを外部インタープリターに渡し、受信する方法を決定します。


2
反対投票ではありませんが、ほとんどのpython Webインストールは、mod_wsgiまたはmod_pythonのどこにあるかを見てきました。
ChristopheD

これは、ほとんどの人がCGIスクリプトという用語を使用する方法ですが、この用語が意味するものではありません。
reinierpost 2016年

あなたはインタープリターと言いますが、Cはめったに解釈されず、Cコンパイル済みプログラムなどのコンパイル済みプログラムをCGIに使用できます。
user34660 2017年

11

CGIは、要求を処理するために外部プログラムがWebサーバーによって呼び出されるメカニズムであり、環境変数と標準入力を使用して、要求データをプログラムにフィードします。外部プログラムが記述されている正確な言語は重要ではありませんが、CGIプログラムを他の言語よりもいくつかの言語で書く方が簡単です。

CGIスクリプトは実行権限を必要とするため、デフォルトでは、httpdはcgi-binディレクトリ内のCGIプログラムの実行のみを許可します(おそらく誤解されている可能性があります)セキュリティー目的。

ほとんどのPHPスクリプトは、を介してWebサーバープロセスで実行されますmod_php。これはCGIではありません。

プログラム(および関連するインタプリタ)はリクエストごとに起動する必要があるため、CGIは低速です。最新の代替手段は、mod_phpで使用される埋め込み実行と、FastCGIで使用される長期実行プロセスです。特定の言語には、それらのメカニズムを実装する独自の方法がある場合があるため、CGIに頼る前に必ず質問してください。


@Ignacio Vazquez-Abrams:CGIインターフェイスが新しいプロセスを作成する場合、CGIリソースのリクエストを受信するたびに、CGIとmod_phpの実行の違いは何ですか??????? CGIとmod_phpは同じですか???? または、mod_phpの下ではなくCGIインターフェイスの下で実行されるPHPスクリプトを書くことは可能ですか?
hardik、2011

@Hardik:mod_phpは、独自のプロセスを担当するHTTPdの一部として実行されます。
イグナシオバスケスエイブラムス

この「外部プログラム」とは何ですか?php-fpmでphpを実行する場合、それはインタープリターですか?
2015

@slier:Webサーバーではない任意のプログラムです。
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abramsですからinterpreter、php-fpmでphpを実行している場合、それを仮定しても安全ですか?
2015

7

おそらくCGI以外のものを知りたいと思うかもしれませんが、答えはWebサーバーのモジュールです(私がApacheを実行していると仮定した場合)。そして、それは大きな違いです。CGIは外部プログラム、スレッド、PERL、PHP、Cアプリサーバーをインスタンス化するものであれば何でも、MODULEとして実行すると、そのプログラムはWebサーバー(apache)そのものです。

このため、パフォーマンス、セキュリティ、移植性に関する多くの問題が発生します。しかし、最初にCGIでないものを理解し、それが何であるかを理解することは良いことです。


7

実際の例:Webサイトに表示する必要がある複雑なデータベース。データベースは1986年頃に設計されたため(!)、ディスク領域を節約するために、多くのデータがさまざまな方法でパックされました。

開発が進むにつれ、開発者はSQLだけで複雑なデータリクエストを解決できなくなりました。たとえば、ソートアルゴリズムが珍しいためです。

3つの賢明なソリューションがあります。

  1. すばやくダーティ:ソーサリングされていないデータをPHPに送信し、そこでソートします。これはページが呼び出されるたびに繰り返されるため、明らかに非常に高価なソリューションです。
  2. プラグインをデータベースエンジンに書き込みますが、管理者はサーバーで外部コードを実行する準備ができていませんでした。
  3. プログラム(C、Perlなど)でデータを処理し、HTMLを出力できます。プログラム自体は/ cgi-binに入り、PHPを介さずにWebサーバー(Apacheなど)から直接呼び出されます。

CGIはソリューション#3でスクリプトを実行し、効果をブラウザーに出力します。コンパイルされたプログラムの速度、SQLより優れた言語の柔軟性があり、SQLサーバーにプラグインを作成する必要はありません。(これも、SQLとCに固有の例です)


1
私にとって最良の答えは、私はそれを得た。
Daniel Katz

7

CGIスクリプトは、コンソール/シェルプログラムです。Windowsでは、「コマンドプロンプト」ウィンドウを使用すると、コンソールプログラムが実行されます。WebサーバーがCGIスクリプトを実行すると、環境変数または「標準入力」を使用してコンソール/シェルプログラムに入力が提供されます。標準入力は、コンソール/シェルプログラムにデータを入力するようなものです。CGIスクリプトの場合、Webサーバーが入力を行います。CGIスクリプトはデータを「標準出力」に書き出し、その出力はHTMLページとしてクライアント(Webブラウザー)に送信されます。標準出力は、Webサーバーがそれを読み取って送信することを除いて、コンソール/シェルプログラムに表示される出力に似ています。

CGIスクリプトはブラウザから実行できます。URIには通常、CGIスクリプトに提供されるクエリ文字列が含まれます。メソッドが「get」の場合、クエリ文字列は、QUERY_STRINGと呼ばれる環境変数でCGIスクリプトに提供されます。メソッドが "post"の場合、クエリ文字列は標準入力を使用してCGIスクリプトに提供されます(CGIスクリプトは標準入力からクエリ文字列を読み取ります)。

CGIスクリプトの初期の使用はフォームの処理でした。HTMLの最初の頃、​​HTMLフォームには通常「アクション」属性と「送信」ボタンとして指定されたボタンがありました。送信ボタンが押されると、「action」属性で指定されたURIが、クエリ文字列として送信されたフォームのデータとともにサーバーに送信されます。「アクション」がCGIスクリプトを指定している場合、CGIスクリプトが実行され、HTMLページが生成されます。

RFC 3875の「Common Gateway Interface(CGI)」は、Cを使用してCGIを部分的に定義しています。たとえば、環境変数は「Cライブラリルーチンgetenv()または変数environによってアクセスされる」と述べています。

C / C ++を使用してCGIスクリプトを開発し、Microsoft Visual Studioを使用して開発する場合は、コンソールプログラムを開発します。


「CGIスクリプト」は広義の用語であり、実行可能ファイルを含めることもできます。
71GA

6

CGIは、ユーザーが作成してWebサーバーサイトに保存するプログラム(またはWeb API)です。CGIはファイルです。

このファイルはWebサーバーで待機します。クライアントブラウザーがWebサーバーにCGIファイルを実行する要求を送信すると、WebサーバーはサーバーサイトでCGIファイルを実行します。このCGIプログラムへの入力は、もしあれば、クライアントブラウザからのものです。このCGIプログラムの出力はブラウザーに送信されます。

CGIプログラムの作成に使用する言語は何ですか?他の投稿はすでにc、java、php、perlなどについて言及しています。


4

CGIの背後にある考え方は、プログラム/スクリプト(PerlであれCであれ)がSTDIN(要求データ)を介して入力を受け取りSTDOUT、(エコー、printfステートメント)を介してデータを出力するというものです。

ほとんどのPHPスクリプトが適格ではない理由は、それらがPHP Apacheモジュールの下で実行されるためです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.