• ベストアンサー

php/cgi , php(cgi)とは?

phpを勉強するのに当たって無料レンタルサーバーを借りたのですが、PHPをそのままおけば出来る物だと思っていたのですが、できなかったので詳細をみたところPHP/cgiと書かれていたのですがどういうことなのでしょうか? この意味をわからなければPHPを使用することはできないと思い質問させていただきました。 PHPをCGIにする方法(?)とできればそのやり方をアドバイスして頂きたいのですがよろしくお願いします。。

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

  • ベストアンサー
  • kalze
  • ベストアンサー率47% (522/1092)
回答No.3

CGIというのは、「Common Gateway Interface」の略になります。 webサーバがリクエストに応じてプログラムを呼び出す(実行する)ための仕組みです。 言語は対応さえしていれば何でもいいです。 webサーバ(例えばapache)に拡張子が.cgiというリクエストがきたら、プログラムを起動してねと設定しておきます。 このとき、拡張子は設定次第ですので、.phpでも構いません。 すると、リクエストのあったファイルを実行ファイルとして認識し、実行しようとします。 そしてその結果をリクエストにたいして返します。 このとき、そのファイルの冒頭に #!/usr/bin/php などと書いておくことで、そこに指定してあるものによって実行されます。 極端にいうと、指定してある拡張子のリクエストが来ると、webサーバはそのファイルを実行するようにOSに依頼する。 OSはそれがそのままで実行できるものなら実行するけど、phpファイルはただのテキストファイルなので実行できないが、冒頭に書いてあるPHP本体にそのファイルを渡して実行させる。 というようなイメージです。(イメージね) これに対して、アップロードするだけでいいんじゃ?っていっているのは、webサーバのモジュールとして組み込んでいる場合になります。 簡単にいえば、apacheが/usr/bin/phpと同じようにPHPを解釈して実行できるようにapacheに機能を追加しているものです。 mod_phpですね。 これは別にPHPの専売特許ではなく、perl版、python版、ruby版など他にもあります。 CGI形式は、webサーバとは別にプログラムを起動して実行するので、 webサーバとは異なる権限で実行することも可能です(suexec) ただ、別プログラムを起動し実行させるので、その分実行が遅くなります(リクエストの度に起動するので。予め起動しておいて、実行待ちにする方法もあります) モジュール形式は、webサーバの機能の一部ですので、webサーバの権限で実行します。また、別のプログラムを起動する必要はないので、その分速くなります。 これらの設定はレンタルサーバで行われているはずなので、PHPファイルを解釈実行させるプログラムを冒頭で宣言しておくだけでCGIとして実行されます。

hamu1985
質問者

お礼

ご回答ありがとうございます。 初心者にはとてもわかりやすいです。モジュールの意味も恥ずかしながらわかっていなかったところなので、これだけ細かく説明していただけると助かります。 #!/usr/bin/php の部分を記述したら動くようになりました! ありがとうございました。

その他の回答 (2)

  • uki629
  • ベストアンサー率23% (40/172)
回答No.2

>ちなみに、CGIとPHPは違うものなのでCGIはOKでもPHPはNGもありえます。 CGIはシステム PHPは言語 PHPをCGIモードで動かせばCGIプログラムとして動く。 PHPをモジュールとして動かせばCGIとして動きません。

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

phpができなかったとは、どういう結果から判断されましたか? 一般的には、拡張子がPHPのファイルなら大丈夫なはずです。 レンタルサーバーはPHPに対応している所ですか? 未対応の所をレンタルしてもPHPは動きませんよ。 ちなみに、CGIとPHPは違うものなのでCGIはOKでもPHPはNGもありえます。 貴方が判断できないのであれば、レンタルサーバーのURLもしくは作成したURLを書いて下さい。

hamu1985
質問者

補足

拡張子をPHPにしてできなかったので、!#/usr/bin/phpを行頭に挿入したら使えるようになりました。 レンタルサーバーは無料のORNを使用しています。

関連するQ&A

専門家に質問してみよう