- ベストアンサー
PHPの特徴は
HTMLと混在してプログラムが書ける 言語として文法がシンプルで覚えやすい Webアプリ専用の言語として便利なライブラリが豊富 実行速度が速い(Apacheのモジュールとして実行) データベースとの接続性が良い 漢字コード・ライブラリを標準でサポート とありますが 「Apacheのモジュールとして実行」 とはどういうことでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>が表示されますがこれはCGIでしょうか? CGI かどうかを見るのに、手っ取り早いのは、 <?php phpinfo(); ?> という内容のindex.php を実行して、表示される 情報の中で、「Server API」という項目を見れば わかると思います、ちなみに、今は自宅なので、Windows版 で確認しましたが、「CGI/FastCGI」となっていて、CGI 動作であることが一目瞭然です。 ちなみに、Fedora core ですと、Redhat 系ですよね。 Redhat を仕事で使っていますが、大体は、モジュール組み込みでした。 モジュール組み込みだったら、/etc/httpd/conf/httpd.conf の中に、 LoadModule php_module modules/libphp4.so (うろ覚え) こんな感じで、libphp4.so を読み込むための 記述が あると思います。 コメントアウトしているなら、コメントをはずして、 Apache を再起動すれば、モジュールで動き出すとは思います。
その他の回答 (4)
- kusukusu
- ベストアンサー率38% (141/363)
実行形態は以下の通りです。 1.CGI版 ブラウザ→Apache→CGIプログラム→Apache→ブラウザ 2.モジュール版 ブラウザ→Apache上でスクリプト実行(スクリプトのロードをApache上で行う)→ブラウザ ご覧の通り、CGI版だとApacheがCGIプログラムに問い合わせるのに対して、モジュール版ではApacheそのもので行われます。
補足
ありがとうございます FedoraCoreをフルインストールしてアパッチを実行しているPC1(192.168.101.1)と ブラウザを搭載した98seのPC2(192.168.100.1)が TCP/IPで接続されていて PC1に ファイル/var/www/html/index.php: <?php echo "Hello World!<br/>"; ?> を置きPC2のブラウザのアドレス欄に http://192.168.101.1/index.php を入力するとブラウザに Hello World! が表示されますがこれはCGIでしょうか?
- kircher
- ベストアンサー率47% (11/23)
「Apacheのモジュールとして実行」というのは、 WebサーバであるApache の 機能の一部として機能するということを意味します。 Apache は、そもそも多機能ですので、すべての機能を入れると、結構大きなメモリーを使うことになります。そのため、それぞれの機能をモジュールという形で起動時に選んで使うことができます。 PHPをCGIで実行した場合、実行される毎に、 1)新しくメモリを確保して、 2)スクリプトを実行する。 3)メモリを開放する。 簡単に言うと上記のような手順になります。 この中で、1と3のプロセスが入ります。 これは、毎回新しいプロセスを起している動作です。 メモリの確保と開放というのは、OSで結構重い処理になります。 モジュールで実行される場合。 Apache の機能として、PHPが実行されるため、 1)スクリプトを実行する という手順だけになるため、CGI より処理が軽いうえに、新しいプロセスを作る必要がないために、 処理が早いということなります。
補足
ありがとうございます モジュールで実行する手順はどのようになるのでしょうか?
PHPには大きく分けて二種類の利用方法があったりします。 その一つが「モジュール版」で、もう一つが「CGI版」です。 で、何が違うのかというと(簡単に言えば)「単体で実行できるか否か」という点です。 CGI版はコマンドライン上で実行することが可能で、Apache等から独立したプロセスとして扱われます。 対してモジュール版は、コマンドライン上では実行出来ないのですが、PHPスクリプトを実行するときにはApache以外のプロセスが実行されないので、多少処理速度が速くなります。 なので、PHPスクリプトを実行させた場合、見かけ上 CGI版:ApacheとPHPスクリプトの2つのプロセスが実行 モジュール版:Apacheプロセスだけが実行 ということになり、その分処理速度が速くなる…ということのようです。 自信ないので、間違ってたらどなたか補足お願いします。
補足
ありがとうございます 具体的に実行の手順はどうなるのでしょうか?
- tak2003
- ベストアンサー率32% (174/540)
PHPをモジュールとして動かしたりできるんですよ。 パールとかCとかCGIとか色々な言語を用いる事がサーバで出来るみたいですが、モジュール(API)だと速いらしいです。 言語は本をよまんとチンプンカンプンです。
- 参考URL:
- http://module.jp/book/
お礼
ありがとうございます
お礼
httpd.confのLoadModuleの項は LoadModule access_module modules/mod_access.so LoadModule auth_module modules/mod_auth.so LoadModule auth_dbm_module modules/mod_auth_dbm.so LoadModule ldap_module modules/mod_ldap.so LoadModule include_module modules/mod_include.so LoadModule env_module modules/mod_env.so LoadModule expires_module modules/mod_expires.so LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule mime_module modules/mod_mime.so LoadModule dav_module modules/mod_dav.so LoadModule status_module modules/mod_status.so LoadModule asis_module modules/mod_asis.so LoadModule info_module modules/mod_info.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dir_module modules/mod_dir.so LoadModule imap_module modules/mod_imap.so LoadModule actions_module modules/mod_actions.so LoadModule speling_module modules/mod_speling.so LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so LoadModule cache_module modules/mod_cache.so LoadModule suexec_module modules/mod_suexec.so LoadModule cgi_module modules/mod_cgi.so などで問題のPHP関係がありません どうしたらいいのでしょうか?
補足
ありがとうございます Server APIの項目が Apache 2.0 Handler となっていました とういうことはCGIなのでしょうか?