• ベストアンサー

CGIとPHP

PHP初心者です。 レンタルサーバーなどで、いろんな契約がありますがCGIが使用可能とあった場合に、PHPが使用可能である。と考えていいのでしょうか?また、CGI不可の場合は、拡張子がPHPのものは全て不可なのでしょうか? 自分のイメージとしては、CGIは機能でPHPはそれを実現する手段と言うイメージなのですが・・・ 正直、よくわかりません。 よろしくお願いします。

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

  • ベストアンサー
  • NARH
  • ベストアンサー率82% (88/107)
回答No.5

CGI って、 Common Gateway Interface の略なのですが、大雑把に、「Webサーバでプログラムを動かすための共通した仕組み」ぐらいで認識していいと思います。 プログラム言語っていっぱい種類があると思います。(PHP とか Perl とか) Web サーバでプログラムを実行してページを表示したいときに、それぞれの言語が独自にWeb サーバの拡張機能を提供していたら、面倒だしヤヤコシイので共通的な仕組みを用意しました。 この仕組みをCGIと呼んでいます。 PHPって、Web サーバの拡張機能とCGIとして利用する2パターン実行する方法が提供されています。 拡張子ですが、拡張子ってそのファイルがなんなのかを表していると思います。 例えば、XXXX.jpg だとすると jpeg データの画像だねとか。 ですから、XXXX.php ですとPHPのプログラムだねとわかるので、拡張機能がインストールされていればPHPの処理系に実行してもらおうということで、そう設定します。 ところが、Webサーバにもいろいろ種類がありまして、すべてに拡張機能が提供されているわけではありません。 それでもPHPを使いたいと言う場合は、CGIで実行するという手段は残されています。 CGIの場合は、いろいろなプログラム言語が選べますから、先に述べた拡張子はどうでもよくて、実行出来るかどうかで判断します。 このため、サーバにアップしたときにパーミッション(権限)の設定で、実行できますよという印の "x" が付いた物にします。 前置きが長くなりましたが、ご質問の回答としては > 自分のイメージとしては、CGIは機能でPHPはそれを実現する手段と言うイメージ これは正解ですね。ですが、Webサーバの拡張機能で実現する方法もあるということです。 > CGIが使用可能とあった場合に、PHPが使用可能である。 は、PHPの処理系がインストールされていれば、CGIとして動かせるかもしれないということになります。 > CGI不可の場合は、拡張子がPHPのものは全て不可なのでしょうか? 不可とは限らないですね。

origin_five
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (4)

回答No.4

ここであれこれ話しても意味はありませんので、 サーバー管理会社に 「CGIに使用できる言語は何か」というのを確認されるのが確実だと思います。

origin_five
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.3

ちょっと誤解が広まっているのですが、「CGI」は言語の名前ではありません。 CGIとは「Webサーバとサーバ上で実行するプログラムとの間で引数等の情報をやりとりする仕組み」にすぎません。 CGIという規約にのっとって作成すれば、どんなプログラムであればWebサーバ上で動かすことができます。その開発に使用するプログラミング言語は何でもかまいません。 それに対し、PHPは「Webサーバー上で実行するための専用プログラミング言語」の名前ですが、PHPはCGIを使わずに、独自の方法で直接Webサーバとの情報のやりとりをおこないます。そのため、CGIが使えるからといってPHP使えるとはかぎりません。 なお、CGIでは、一般的には、perl がよく使われていますが、最近は ruby が流行っています。C言語で作ってもいいですし、PHP をCGIを通して動かすことも可能です。 そのため、単に「CGIが使える」というだけでは情報が不十分です。CGI用の言語としてどんなものが用意されているのかを確認する必要があります。

origin_five
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。
回答No.2

簡単に言えば、CGIで作る掲示板もあれば、PHPで作る掲示板もあります。 どちらも同じと言えば同じです。 どちらで作ってあるのかと言う点です  CGIもPHPも言語です。 PHPは、SQLなどのデーターベースを使い、より高度なデーターベースを構築できます。 CGIは、CGIの中でデーターベースを作ることが出来ますが、またPHPとは違うという事です。 CGIを使って、一見ブログ風な日記システムを作ることも出来ます。 PHPも当たり前の様にありますし、 カウンター、チッャト、メールフォーム・・・・・何でも CGIで作ってあるのかPHPかその違いです。 一部CGIで一部PHPと言った使い方は出来ません。 言語が違うのでね。 どちらの方が、構築や拡張性があるかといわれればPHPですね。 サーバが用意したCGI以外の自作CGIは付加とあれば、PHPも無理ですし。 SQLのような物も、自作用として貸してくれないと思います。

origin_five
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。
回答No.1

一般論と、レンタルサーバー屋さんごとの方言もあるのでややこしいですよね。 普通CGIっていうと、apacheの設定ファイルでいうOptions ExecCGIが有効になっている場合で、 指定された拡張子のファイルへのアクセスだと、、サーバー側で実行されてから その結果が送信されてくるものです。 言語的には、perlやC言語をコンパイルしたものなど そのサーバーで動作するファイルなら、 なんでもよいことになります。 PHPはそれとは、別で、Apache自身の拡張機能で動作するので、 ExecCGIの設定とは別になります。 ただ、PHP実行可能ではあるが、CGI版PHPを使って、CGIとして動くレンタルサーバーもあります。 要は、 CGI(perl等)はOK PHPはNG もあれば、その逆もあり、 CGIが使用可能だからといって、必ずPHPが動くとは限りません。

origin_five
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A