mod_phpとは何ですか?


108

Zendチュートリアルを行っているときに、次のステートメントに遭遇しました。

.htaccessのphp_flag設定は、mod_phpを使用している場合にのみ機能することに注意してください。

誰かがそれが何を意味するのか説明できますか?

回答:


158

mod_phpApacheモジュールとしてのPHPを意味します

基本的に、mod_phpApacheモジュールとしてロードすると、ApacheがPHPファイルを解釈できるようになります(これらはによって解釈されますmod_php


編集: Apacheで作業する場合、PHPを実行するには(少なくとも) 2つの方法があります:

  • CGIの使用:PHPプロセスはApacheによって起動され、PHPコードを解釈するのはそのPHPプロセスであり、Apache自体ではありません
  • PHPをApacheモジュール (と呼ばれるmod_phpとして使用する場合:PHPインタープリターは、Apacheプロセス内に「埋め込まれる」ようなものです。外部PHPプロセスがないため、ApacheとPHPはよりよく通信できます。


そして、コメントの後に再編集mod_phpします:CGIを使用するか、それはあなた次第です:それはあなたのウェブサーバーの設定の問題だけです。

現在ご使用のサーバーで使用されている方法を知るために、あなたはの出力を確認することができますphpinfo():PHPを経由して実行されているかどうかを示す何かがあるはずですmod_php (またはmod_php5、またはCGI経由で。

また、php_sapi_name()関数を確認することもできます。この関数は、WebサーバーとPHP間のインターフェイスのタイプを返します


Apacheの設定ファイルをチェックインすると、を使用するときにmod_php、次のLoadModuleような行が表示されます。

LoadModule php5_module        modules/libphp5.so

(ファイル名は、右側に、異なる可能性- Windows上で、例えば、それはする必要があります.dll


xamppを使用してphp、apache、およびmysqlパッケージをインストールしました...それで、私のセットアップはどうなりますか?
SpikETidE 2010

PHPが現在動作していない場合は、有効にする必要があります。PHPがすでに動作している場合は、CGIを使用している必要があります。その場合、おそらくモジュールを有効にするだけではありません。モジュールはシステムに存在しない場合もあります。
d11wtq

1
うん..!。phpinfo()を実行すると、mod_php5がLoaded Modulesセクションに含まれていることがわかります。そして、それは、apacheモジュールとして実行していることを意味します...
SpikETidE 2010

3
mod_php最も一般的な構成です。
troelskn 2010

@Pascal、私mod_phpは本当のPHPではないと思います。それは単なるApacheアドオンです。か、私はあなたが答えをオフに開始すべきだと思うの定義は何の正確 PHPが意味するのでしょうか?
Pacerier

58

この回答はTuxRadarから取得されます

Webサーバーを介してPHPを実行する場合、PHPのCGI SAPIを使用して実行するか、Webサーバーのモジュールとして実行するかの2つの異なるオプションがあります。それぞれに独自の利点がありますが、全体として、モジュールが一般的に好まれます。

PHPをCGIとして実行するということは、基本的にWebサーバーにPHP実行可能ファイルの場所を指示し、サーバーがその実行可能ファイルを実行して、ページにアクセスするたびに呼び出したスクリプトを提供することを意味します。つまり、ページをロードするたびに、PHPはphp.iniを読み取ってその設定を設定し、すべての拡張機能をロードして、スクリプトの解析作業を開始する必要があります。繰り返しの作業がたくさんあります。

PHPをモジュールとして実行すると、PHPは文字通りWebサーバー内に配置されます-起動は1回だけで、設定と拡張機能を1回だけロードし、セッション間で情報を保存することもできます。たとえば、PHPアクセラレータは、リクエスト全体でキャッシュされたデータを保存できるPHPに依存しています。これは、CGIバージョンでは不可能です。

PHPをモジュールとして使用する明らかな利点は速度です。CGIからモジュールに変換すると、速度が大幅に向上します。多くの人々、特にWindowsユーザーはこれに気づかず、php.exe CGI SAPIを使用し続けますが、これは残念です。モジュールは通常3〜5倍高速です。

ただし、CGIバージョンを使用することには重要な利点が1つあります。それは、ページをロードするたびにPHPが設定を読み取ることです。PHPをモジュールとして実行している場合、php.iniファイルに加えた変更はWebサーバーを再起動するまで有効になりません。そのため、多くの新しい設定をテストしていて、即時の応答を確認したい場合は、CGIバージョンが適しています。


@JohannEchavarria、クレイジーなものをたくさん追加しない限り、サーバーの再起動には数秒しかかかりません。SSDを備えた「通常の」最新システムでは、2秒未満です。
Pacerier

12

サーバーにphpモジュールをインストールして、phpコードを解析できるようにする必要があります。

あなたがubuntuを使用している場合は、これを簡単に行うことができます

sudo apt-get install apache2

sudo apt-get install php5

sudo apt-get install libapache2-mod-php5

sudo /etc/init.d/apache2 restart

それ以外の場合は、phpでapacheをコンパイルできます。http//dan.drydog.com/apache2php.html

サーバーのOSを指定すると、他のユーザーがより具体的に回答できるようになります。



3

これらの回答を追加するだけで、mod_phpは、HTTPDサーバーでPHPを使用するために利用可能な最も古くて最も遅いメソッドです。古いバージョンのApache HTTPDおよびPHPを実行している場合を除き、お勧めしません。php-fpmとproxy_cgiが推奨される方法です。


0

mod_phpはPHPインタープリターです。

ドキュメントから、mod_phpの重要なキャッチの1つは、

「mod_phpはスレッドセーフではなく、可能な限り最も遅い設定であるprefork mpm(マルチプロセス、スレッドなし)を使用するように強制します。」

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.