無料CGI、PHPサイト(確認画面付きメールフォーム・メーリングリスト・メルマガ設置、逆アクセスランキング、画像カウンター等)PHPマニュアル by k-sky

Apache 2.0 (Unixシステム用)

このセクションでは、PHPを Unix システム上の Apache 2.0 にインストールする際の 手引きと注意事項について説明します。

警告

Apache2 の MPM マルチスレッドモードを実運用環境で使用することは推奨されません。 代わりに prefork MPM または Apache1 を使用してください。その理由については、 マルチスレッド版 MPM の Apache2の FAQ エントリを参照してください。

» Apache ドキュメンテーション を参照し、Apache 2.0.x の基本的な事項について理解しておくことを 強く推奨します。

注意: PHP と Apache 2.0.x の互換性に関する注意
PHP の以下のバージョンは、Apache 2.0.x の最新版での動作が確認されています。

以上のバージョンの PHPは、Apache 2.0.40 以降と互換性があります。
Apache 2.0 SAPI のサポートは PHP 4.2.0 で開始されました。 PHP 4.2.3 は Apache 2.0.39 で動作します。PHP 4.2.3 を Apache の他のバージョンと 組み合わせて使用しないでください。 PHP 4.3.0 もしくはそれ以降のバージョンの PHP を 最新版の Apache2 と組み合わせて使用することが推奨されます。
ここで挙げたバージョンの PHP は、Apache 1.3.x でも動作します。

最新バージョンの » Apache 2.0 を ダウンロードし、上述のいずれかのバージョンの PHP を用意してください。 この手引きでは Apache 2.0 で PHP を動作させるための 基本的な部分しかカバーしていません。さらに詳しい情報については、» Apache ドキュメンテーション を参照してください。 情報が古く不正確になってしまうため、以下では詳細なバージョン番号は 記述されていません。'NN' という文字列をご使用のバージョンに適宜置き換えて ください。

例1 インストール手順 (Apache 2 共有モジュール版)

1.  gzip -d httpd-2_0_NN.tar.gz
2.  tar xvf httpd-2_0_NN.tar
3.  gunzip php-NN.tar.gz
4.  tar -xvf php-NN.tar
5.  cd httpd-2_0_NN
6.  ./configure --enable-so
7.  make
8.  make install

    以上で Apache 2.0.NN が、モジュールの動的ロードとデフォルトの
    MPM(マルチプロセッシングモジュール)である prefork が有効になった
    状態で、/usr/local/apache2 にインストールされます。
    
    インストールが正常か調べるには、以下のようにします。
      /usr/local/apache2/bin/apachectl start
    サーバの停止は、以下の通り。
      /usr/local/apache2/bin/apachectl stop
    
    引き続き PHP のセットアップを行います。

9.  cd ../php-NN
10. PHP の configure を行います。ここでは、様々なオプションを指定し、特定の
    拡張モジュールを有効にするといったカスタマイズを行います。指定可能な
    オプションの一覧は、./configure --help を実行すると得られます。以下に、
    Apache 2 と MySQL のサポートを有効にする、簡単な設定例を示します。
   
      ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql

11. make
12. make install

    configure オプションを変更して再インストールする場合は、最後の 3 つ
    の手順を繰り返します。共有モジュールとしてコンパイルされた PHP を
    有効にするには Apache を再起動するだけです。Apache の再コンパイルは
    必要ありません。

    特に断りがない限り、'make install' は、PEAR、phpize のような様々な 
    関連ツール、CLI 版 PHP などもインストールすることに注意してください。
    
13. php.ini ファイルを設定する
    
      cp php.ini-dist /usr/local/lib/php.ini
      
    PHP の実行時設定を変更するには、.ini ファイルを編集します。
    このファイルを他の場所に置きたい場合は、手順 10 で、
    オプション --with-config-file-path=/path を使用します。

    php.ini-dist ではなく、php.ini-recommended を使用する場合は、PHP の
    動作が変化しますので、ファイル中に記載されている変更点の一覧を確認する
    ようにしてください。

14. httpd.conf を編集し、PHP の共有モジュールをロードするよう設定します。
    LoadModule 命令の右側に記述するパスは、システムの PHP 共有モジュール
    を指している必要があります。上記の make install により既にこの設定は
    追加されている場合もありますが、確認が必要です。

    PHP 4 の場合:

      LoadModule php4_module modules/libphp4.so

    PHP 5 の場合:

      LoadModule php5_module modules/libphp5.so
   
15. Apache が特定の拡張子のファイルを PHP としてパースするよう設定します。
    たとえば、Apache が拡張子 .php のファイルを PHP としてパースするようにします。
    単に Apache の AddType ディレクティブを使うだけではなく、
    悪意を持ってアップロード (あるいは作成) された exploit.php.jpg
    のようなファイルが PHP として実行されてしまわないようにしたいものです。
    この例では、PHP としてパースさせたい任意の拡張子を追加していくだけです。
    ためしに .phtml を追加してみましょう。
            
      <FilesMatch \.php$>
          SetHandler application/x-httpd-php
      </FilesMatch>

    あるいは、拡張子 .php, .php2, .php3, .php4, .php5, .php6, そして
    .phtml のファイルだけを PHP として実行したいは、このようにします。

      <FilesMatch "\.ph(p[2-6]?|tml)$">
          SetHandler application/x-httpd-php
      </FilesMatch>
    
    拡張子 .phps のファイルを PHP ソースファイルとして扱うには、これを追加します。

      <FilesMatch "\.phps$">
          SetHandler application/x-httpd-php-source
      </FilesMatch>

16. Apache サーバを、通常の手順通り、起動させます。
      /usr/local/apache2/bin/apachectl start

          - あるいは -

      service httpd restart

上記の手順で、Apache2 ウェブサーバ上で SAPI モジュールとして PHP を動作させることができます。もちろん、Apacheと PHP の双方とも、もっと多くの configure オプションを指定することが出来ます。 詳しい情報を得るには、ソースツリーディレクトリで ./configure --help を実行してください。また、マルチスレッド版の Apache2 をビルドする場合は、デフォルトの MPM である preforkworker もしくは perchild で 上書きする必要があります。このためには、上記の手順 6 で--with-mpm=worker もしくは--with-mpm=perchild を指定します。マルチスレッド版 については、その動作に関して十分注意してください。 詳細については Apacheドキュメントの » マルチプロセッシングモジュール (MPM) を参照してください。

注意: コンテントネゴシエーションを使用する場合には、 Apache の MultiViews オプションに関するFAQ を参照してください。

注意: マルチスレッド版の Apache をビルドする場合は、システムがスレッドを サポートしている必要があります。また、PHP は 実験的なステータスにある Zend Thread Safety (ZTS) でビルドされます。 そのため、使用できない拡張モジュールがあります。デフォルトの prefork MPM でのビルドが推奨されます。