教えて! goo のコンテンツに対する取り組みについて

現場でPHPやPerlを使っている方に質問です。

CGIとPHPはプログラム経験を積んだ人にしか分からないような違いがあるのでしょうか?

今の職場でPHPとCGI/Perlは違うものだと言っている人がいます。
CGIはウェブサーバ上でユーザプログラムを動作させるための仕組だと解釈していたため、その人と意見が対立しました。

gooドクター

A 回答 (7件)

 「犬とペットの呼び戻し方は違う」、「いや違わない」と言い合っているようなものですね。



 このたつは明らかに違うものです。他の方のコメントを読んでいても、特にCGIに対する理解が間違っているものを見受けます。

 CGIとは、Coomon Gateway Interface の略で、サーバーに対してクライアントから要求があった場合、その要求を「他のプログラム」に渡してそのプログラムに処理を任せる仕組みのことです。
 他のプログラム、Perlやシェルスクリプト、Python、Ruby、C;;など色々な言語が使えます。・・・これらを【CGIプログラム】というが、【CGI】とは別。
 PHPは、その意味では普通はCGIに含めることはしません。特にapacheユーザーは。
 なぜなら、apacheでは、PHPは、mod_phpを使用するため、どちらかと言うと、SSI(Server Side Includes http://ja.wikipedia.org/wiki/Server_Side_Includes )に近いと考えたほうがよいからです。ただし、サーバーにAN-HHTTPDを使用する場合は、CGIとして動作させますし、WindowsIISで動作させる場合はISAPIを使用します。・・・apacheで動作している場合はCGIではないということです。

 結論から言うと、CGIとPHPは別のものです。
 
    • good
    • 0
この回答へのお礼

ありがとうございました。
言語にいろいろな使い方があるということが分かりました。
CGIプログラム<PHP,PERLという一つの視点しかなくて、
意見が対立した日はその人と気まずい雰囲気になったりしたのですが、
皆様の回答を読んで、言葉の使い方が間違えていたり自分の考え方がいかに小さかったかを知ることができました。
質問に対してご教授してくださった皆様、
本当ありがとうございました。

お礼日時:2009/03/20 13:53

>CGIはウェブサーバ上でユーザプログラムを動作させるための仕組だと解釈していた



という広い概念を指し示したいなら「Webサーバ側のプログラム実行環境」とか(それがスクリプト言語なら)「サーバサイドスクリプト(Server Side Script)」とか呼ぶ方が,いらぬ対立を招かずに済むでしょう。

CGIとは何か,については,ja.Wikipediaの「CGIに関するよくある誤解」および,過去の私の回答を参照。
http://ja.wikipedia.org/wiki/Common_Gateway_Inte …
http://okwave.jp/qa4288537.html?ans_count_asc=2 の私の過去の回答No.5
    • good
    • 0

参考 URL はCGIの定義の説明です。

これによると、CGIは「プログラムを起動する」仕組みだそうで、『プログラム』を『プロセス』と捉えるなら「普通のPHP」 は CGI の一種とは呼べませんね。

けど、「普通のPHP」というのがミソで、PHPを別プロセスとして動かす事も可能らしくて、そのPHPはCGIの 1種です。

一方で、じゃあ「普通のPHP」と同じメカニズムの mod_perl はCGIの一種じゃ無いのかという疑問もあって、簡単には済みそうじゃ無いです。


やっぱり、Perl や PHP は言語の名前で CGI はWebの形式/メカニズムの名前なので、簡潔明瞭な対応付けを考える必要は無いと思います。

参考URL:http://e-words.jp/w/CGI.html
    • good
    • 0

図の訂正。

(上下が余って、縮小して見づらかったので)
「CGIとPHPは違う!と言って聞かない人」の回答画像4
    • good
    • 0

まぁ、名前から違いますから、それなりに違うでしょう。


(Officeだって、やれる事は似たようなもんですけど、98と2007じゃ相当違いますぜ。。。。多分。


どっちも、サーバ側処理のWeb開発言語~って事でいいかと思いますが、特性はそれぞれあるので、開発時に、「何やるのか」「どういうことしたいのか」「どれつかったらいいのか」を適切に判断して、どの言語でどういう開発するかの決定が出来れば、違おうが違うまいが、個人的にはいいと思うんですけどね。
(結局、使う側が使いやすく、満足できればそれでいいんです。


そのためだったら、違うだとか何だとか、細かいことにとらわれず、特性はとらえて、何でもやればいいかと。
(自分は、PHPユーザーでも、Perlユーザーでもなく、ASP(VBScript)ユーザーですけど、必要性があるので、最近Perlにも手~出してますし。その分、ASPの良さ、Perlの良さとかそれぞれあるわ~。と思ってますし。


「結局どっちもプログラム言語だし。違おうがなんだろうが、開発時に、適切なもの選んで開発できりゃそれでいいじゃないですか-w-」とか言い返してやってください。(冗談です。多分、もっと争いが激しくなるので、心の中で思ってやってください。
    • good
    • 0

CGIっていうのは「実行環境」や「方法」の意味合いが強いと思います。


PerlやPHPは言語ですね。

CGIというと、HTTPサーバーのリクエストに応じ、サーバー上のOSで実行され、結果がサーバーソフトウェアに返されようなしくみのことを言います。
HTTPサーバーでコマンドプロンプトを呼び出し、そこでプログラムを起動し、プログラムの結果の出力先をHTTPサーバーにしたようなイメージです。

Perlに限らず、C++やDelphiなどでコンパイルした実行ファイルもCGIになりえます。
実際、CGIに対応したHTTPサーバーで、C++などでコンパイルした実行ファイルで掲示板などのダイナミックなコンテンツなどを提供できます。
一応、PHPもCGIとして動かすことができますが、一般的にはサーバーの拡張モジュールとして動作している場合が多いと思います。
どういうことかというと、HTTPサーバーがモジュールによって機能を拡張され、HTTPサーバーが処理を行います。
ASPなどもそうです。

ですので、一般的には。
PHPはCGIではないですね。
PHPをCGIで動かす場合というのは、何か理由のある限られた環境でしかないと思います。
※添付画像が削除されました。
    • good
    • 0

まず、どの様な観点で見た場合の違いかという点を教えて下さい。


たとえば、
・どの様な目的に使うものか
・出来ること
・生産性
などなどいろいろな観点があると思います。

ただ単に同じか違うかということになると、CGI/PerlとPHPが同じものの別名という訳ではないので、違うものだという事になってしまいます。
    • good
    • 0

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

gooドクター

人気Q&Aランキング