- ベストアンサー
cgiとphpの違いってなんですか
初歩的な質問で、すいません。 フリーのcgiの設置は何度か経験があるのですが今度フリーのphpのメールフォーム設置に挑戦しようとしたら設置方法の説明にparlのパスやバーミッションについては載ってないのでphpは変更する必要がないのかな? って思ったりして、それでcgiとphpの違いについて知りたくなりました。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ここ最近はかなり曖昧になってきていると思いますが、CGIは確か…Common Gateway Interfaceの略でみんなが共通に使えるインターフェイスという意味です。サーバーサイドスクリプトに限らず大きな意味ではJavascriptもAjaxもCGIの一種です。ですか、数年前まではCGI=Perlみたいなことになっていました。というのもCGIはだいたいがPerlで作るのが主流だったからです。 しかしPHPはWebサーバーに組み込まれたモジュール(つまり、Webサーバーの拡張機能)なので皆さんに共通のインターフェイスではなくブラウザーからのみ閲覧使用可能なインターフェイスということになるのでCGIとは区別されます。しかし概念的には似たようなものです。 実際Perlもwebサーバーにモジュールとして組んでしまうことができて、その方が速度が出るとのことでmod_perlなるものを使っている人もいますので特にperlがCGIというわけでもありません。 PHPはWebサーバーのモジュールなのでHTMLの中で平気で動きます。ですのでパスの設定もパーミッションの設定も必要ありません。逆にサーバーサイドのスクリプト(CGIの中のサーバーサイドスクリプトといった方が正確だと思いますが)はmime headerからHTMLを生成するのでパスが必要です。ちょっとややこしい話ですが、サーバーサイドスクリプトは、例えば、 カーネル→Perl→webサーバー→HTML という順番で動きますが、PHPは、 カーネル→Webサーバー→HTML&PHP という順番で動きます!
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
cgiの場合はhttpサーバーに依存しないで動くプログラム。 PHPはcgiでも動くし、モジュールとしてもhttpサーバーに 組み込んで動かす場合もあるのであえて切り分けて書くことが多いです。 cgiのメインはPerlで、cや通常のシェルを動作させる場合もあります
広義でいうCGI(http://e-words.jp/w/CGI.html)にはPHPも含まれますので、ここではCGI=perlという前提で、違いを列挙します。 1.スクリプト言語が違います。PerlとPHPは文法もかなり異なります。 2.CGIはコンピュータ(サーバ)が直接実行しますが、PHPはWebサーバ(Apacheなど)が実行制御していることがほとんどです。 3.したがって、CGIには実行権限が必要ですが、PHPには実行権限は必要ありません。