本章では、UNIX 系のシステムへの PHP のインストールと設定に関する 手引きを示します。使用するプラットフォームや Web サーバについての セクションを参照して、インストールを行ってください。
このマニュアルでは、 「インストールにあたっての一般的な注意事項」 の章で述べたように、Web 用のセットアップを主に扱います。加えて、 コマンドラインから PHP を使うためのセットアップについても扱います。
Unix プラットホームに PHP をインストールする方法はいくつかあり、 コンパイルして設定するやり方と(コンパイル済みの)パッケージを使う方法とに 別けられます。この手引きでは、コンパイルして設定する方法を主に取り上げます。 Unix 系システムには、パッケージを用いるインストールシステムを持つものも多く、 一般的なセットアップを行うには、パッケージが役に立つでしょう。ただし、 (セキュアサーバや様々なデータベースドライバなど)少々特殊な機能が必要な場合、 PHP や Web サーバをビルドする必要が有るかもしれません。ソフトウエアの ビルドに不慣れな場合は、必要な機能を含めてビルドされたパッケージを 誰か他の人が作成済みでないかを調べてみると良いでしょう。
コンパイルにあたって必要な知識とソフトウエアを以下に示します。
PHP の初期設定および設定プロセスは、configure スクリプトに与えられたコマンドラインオプションによりコントロールされます。 ./configure --help とすると、 オプションの一覧と簡単な解説が表示されます。 本マニュアルでは、オプションの種類ごとに別けて解説されています。 PHP 本体のオプションの一覧は 付録 にまとめられています。 各拡張モジュール特有のオプションは、関数リファレンスのページに記述されています。
PHP の configure が完了していないと、 拡張モジュールや本体の実行ファイルのビルドができません。 make コマンドの実行にあたっては、注意してください。 configure がうまく行かず原因もよくわからない場合は、 問題が起きた場合 についての章を参照してください。
このセクションでは、PHP を Unix プラットフォームの Apache 1.3.x にインストールする際の 手引きと注意事項について説明します。Apache 2 に関する手引きと注意 は 別のセクションにあります。
以下の説明では、バージョン番号が意図的に省略されています。 'xxx' の部分を使用するファイルに対応する番号に置き換えてください。 また、手順 10 で configure に与える引数は、 configure のすべてのオプション から選択できます。
例1 PHP インストール 手順 (Apache 共有モジュール版)
1. gunzip apache_xxx.tar.gz 2. tar -xvf apache_xxx.tar 3. gunzip php-xxx.tar.gz 4. tar -xvf php-xxx.tar 5. cd apache_xxx 6. ./configure --prefix=/www --enable-module=so 7. make 8. make install 9. cd ../php-xxx 10. PHP の configure を行います。ここでは、様々なオプションを指定して、 特定の拡張モジュールを有効にするといった、カスタマイズを行います。 指定可能なオプションの一覧は、./configure --help を実行すると得られ ます。以下に、簡単な設定例を示します。Apache 1 と MySQL のサポートを 有効にする例です。apxs のパスは、Apache のインストールパスによって 異なる場合があります。 ./configure --with-mysql --with-apxs=/www/bin/apxs 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 libexec/libphp4.so PHP 5 の場合: LoadModule php5_module libexec/libphp5.so 15. httpd.conf の AddModule セクションに以下を追加します。 ClearModuleList の下あたりに追加してください。 PHP 4 の場合: AddModule mod_php4.c PHP 5 の場合: AddModule mod_php5.c 16. Apache が特定の拡張子のファイルを PHP としてパースするよう(httpd.conf を編集して)設定します。例えば、Apache が拡張子 .php のファイルを PHP としてパースするように設定します。複数の拡張子も、空白で区切って記述する だけで PHP としてパースさせることができます。以下の例は .php と .phtml とを指定した場合です。 AddType application/x-httpd-php .php .phtml PHP のソースをハイライト表示させるために、拡張子 .phps を設定することも よく行われます。 AddType application/x-httpd-php-source .phps 17. Apache サーバを、通常の手順通り、起動させます(HUP または USR1 シグナルを 使用してリロードするのではなく、サーバを停止させてから 再起動する必要があります)。
PHP を静的オブジェクトとしてインストールすることも可能です。
例2 PHP インストール手順 (Apache 静的モジュール)
1. gunzip -c apache_1.3.x.tar.gz | tar xf - 2. cd apache_1.3.x 3. ./configure 4. cd .. 5. gunzip -c php-5.x.y.tar.gz | tar xf - 6. cd php-5.x.y 7. ./configure --with-mysql --with-apache=../apache_1.3.x 8. make 9. make install 10. cd ../apache_1.3.x 11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a (上の行は間違いではありません。この段階で libphp5.a は存在していませんが この時点での存在は必須ではなく、後に作成されます。) 12. make (httpd バイナリが作成され、Apache バイナリディレクトリにコピーすることが できます。最初のインストールの場合は、この後 "make install" を行います。) 13. cd ../php-5.x.y 14. cp php.ini-dist /usr/local/lib/php.ini 15. /usr/local/lib/php.ini を編集すると、PHP の実行時設定を変更できます。 httpd.conf もしくは srm.conf ファイルを編集し、以下を追記します。 AddType application/x-httpd-php .php
注意: PHP 4 については、php-5 を php-4 へ、 php5 を php4 へ置き換えてください。
インストールされている Apache や UNIX の種類によりますが、サーバの停止・再起動の 方法はいくつもあります。いろいろな Apache/UNIX の組合せを想定して、 サーバを再起動する典型的な方法を以下に示します。 /path/to/ を使用するシステムのアプリケーション へのパスに置き換えてください。
例3 Apache を再起動するためのコマンドの例
1. Linux および System V 系 /etc/rc.d/init.d/httpd restart 2. apachectl スクリプトを使用する方法 /path/to/apachectl stop /path/to/apachectl start 3. (OpenSSL を使用している場合) httpdctl および httpsdctl を使用する方法 /path/to/httpsdctl stop /path/to/httpsdctl start 4. mod_ssl や他の SSL サーバを使用している場合、手動で stop や start する /path/to/apachectl stop /path/to/apachectl startssl
apachectl および http(s)dctl の実行ファイルの位置は、システムにより 異なります。システムが locate もしくは whereis、which コマンドを サポートしているなら、これらサーバ制御用プログラムを見つけるために使用すると 便利でしょう。
PHP を Apache 用にコンパイルするには、いくつかの方法があります。以下に例を示します。
./configure --with-apxs --with-pgsql
この例では、Apache がロードする共有モジュールのライブラリ libphp5.so (あるいは PHP 4 では libphp4.so) が作成されます。この共有ライブラリの読み込みは、Apache の設定ファイル httpd.conf の LoadModule の行にて設定します。また、このライブラリには、 PostgreSQL サポートが埋め込まれます。
./configure --with-apxs --with-pgsql=shared
この例でも Apache 用 libphp4.so 共有ライブラリ が作成されます。加えて、(PHP 拡張モジュールの)共有ライブラリ pgsql.so も作成されます。この共有ライブラリ は、PHP 設定ファイル php.ini の extension ディレクティブにより、 もしくは PHP スクリプト内で明示的に dl() 関数により ロードされます。
./configure --with-apache=/path/to/apache_source --with-pgsql
この例では、libmodphp5.a ライブラリと mod_php5.c およびいくつかの付属ファイルが 作成され、Apache のソースツリーのディレクトリ src/modules/php5 にコピーされます。続いて、 --activate-module=src/modules/php5/libphp5.a と指定して Apache をコンパイルしてください。Apache のビルドシステムにより、libphp5.a が作成され、 httpd バイナリに静的にリンクされます (PHP 4 に対しては、php5 を php4 へ 置き換えてください)。PostgreSQL サポートはこの httpd バイナリに 直接埋め込まれるため、最終的な結果としては、Apache 全体と PHP 全体を含む 単一の httpd バイナリが出来上がります。
./configure --with-apache=/path/to/apache_source --with-pgsql=shared
この例は、上と同様ですが、最終的な httpd バイナリに PostgreSQL サポートは直接埋め込まれません。共有ライブラリ pgsql.so が作成され、PHP 設定ファイル php.ini、もしくは dl() 関数により明示的に PHP にロードすることができます。
PHP のビルド方法を選択する際には、各方法の利点と欠点を考慮する必要 があります。共有モジュールのオブジェクトとしてビルドすると、Apache とは別に コンパイルすることができ、PHP を追加または変更する際に全体を 再コンパイルする必要がありません。PHP を Apache に(静的に)組み込むと、 PHP はより高速にロード・実行されます。詳細な情報については、 Apache の Web ページ 「» 動的共有オブジェクト (DSO) サポート」 を参照してください。
注意: Apache のデフォルトの httpd.conf には、次のように記述されたセクションがあります。
これを "Group nogroup" (や "Group daemon")等に変更しないと、 PHP はファイルをオープンすることができません。User nobody Group "#-1"
注意: --with-apxs=/path/to/apxs オプションを 指定する場合には実際にシステムにインストールされている apxs を指定してください。 Apache のソースディレクトリ内にある apxs を指定してはいけません。