Apacheサーバ

本節では、PHPをApacheにインストールする際の注意事項とコツについて 説明します。Unix 版と Windows 版の両方につ いて説明します。 instructions and notes for Apache 2 on a separate pageもあります。

Unix上でApacheにPHPをインストールする手順

以下の手順の10行目でconfigure に追加する引数を configureのオプションの全て から選択可能です。ここではバージョン番号が意図的に省略 されています。'xxx'の部分を貴方が使用するファイルに対応するものに 置き換えてください。

例 3-4. PHPインストール手順 (Apache共有モジュール版)

<![CDATA[
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 のサポートを有効にする簡単な設定例を示します。

        ./configure --with-mysql --with-apxs=/www/bin/apxs

11. make
12. make install

    インストール後にconfigureオプションを変更したくなった場合は
    最後の3つの手順を繰り返してください。新しいモジュールを有効
    にするにはapacheを再起動するだけです。apacheの再コンパイルは
    必要ありません。
    
    特に断りがない限り、'make install' は、PEAR、
    phpizeのような様々なPHP関連ツール、CLI版PHPなどもインストールする
    ことに注意して下さい。

13. php.iniファイルを設定します。

    cp php.ini-dist /usr/local/lib/php.ini

    PHPオプションを設定するために.iniファイルを編集することになります。このファ
    イルを他の場所に置きたい場合は、手順10でオプション
    --with-config-file-path=/path を使用して下さい。

    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としてパースするよう指示します。
    例えば、Apacheが拡張子.phpをPHPとしてパースするようにしてみましょう。
    他のあらゆる拡張子も単に空白で区切って追加するだけで、PHPとしてパース
    させることができます。ここでは、例として .phtmlを追加してみます。

      AddType application/x-httpd-php .php .phtml

    PHPのソースをハイライト表示するために、拡張子.phpsを設定することも
    よく行われます。
    
      AddType application/x-httpd-php-source .phps

17. 通常の手順により Apache サーバを起動して下さい。(HUPまたはUSR1シグ
    ナルを使用してリロードするのではなく)サーバを停止してから再起動す
    る必要があります。

Apache のインストールやUNIXの種類によりサーバを停止し、再起動する 方法はいくつもあります。複数のApache/UNIXの組合せについてサーバを 再起動する際に使用される典型的な方法を以下に示します。 /path/to/ を使用するシステムのアプリケーション へのパスに置き換えて読んで下さい。

例 3-5. Apacheを再起動するためのコマンドの例

1. 複数の Linux および SysV から派生したもの:
/etc/rc.d/init.d/httpd restart

2. apachectl スクリプトを使用する方法:
/path/to/apachectl stop
/path/to/apachectl start

3. (OpenSSL を使用している場合、) apachectl と同様に 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

これにより、共有ライブラリ libphp4.so が作成 されます。Apacheのhttpd.confファイルにおいて LoadModuleを使用してApacheにこのライブラリをロードすることが可能 です。上の例では、PostgreSQLサポートがこの libphp4.soライブラリに埋め込まれます。

./configure --with-apxs --with-pgsql=shared

この例でも Apache用libphp4.so 共有ライブラリ が作成されます。しかし、共有ライブラリ pgsql.so も作成されます。この共有ライブラリ は、php.ini ファイルのextensionディレクティ ブまたはスクリプト内でdl()関数を使用して明示的 にロードすることが可能です。

./configure --with-apache=/path/to/apache_source --with-pgsql

これにより、libmodphp4.a ライブラリと mod_php4.c およびいくつかの付属ファ イルが作成され、Apacheにソースツリーのディレクトリ src/modules/php4 にコピーされます。続いて、 --activate-module=src/modules/php4/libphp4.a を指定してApacheをコンパイルして下さい。これにより、Apache構築シ ステムは、libphp4.a を作成し、 httpd バイナリに静的にリンクされます。 PostgreSQL サポートはこのhttpdバイナリに直接 インクルードされるため、最終的な結果は、Apache全体とPHP全体を含む 単一のhttpdバイナリになります。

./configure --with-apache=/path/to/apache_source --with-pgsql=shared

上と同じですが、最終的なhttpdに PostgreSQLサポートを直接インクルードする代わりに、共有ライブラリ pgsql.soをファイル php.iniまたはdl()により直 接的にPHPにロードすることが可能です。

異なったPHPの構築法を選択する際、各方法の利点と欠点を考慮する必要 があります。共有オブジェクトとして構築する場合、Apacheと分割して コンパイルすることが可能で、PHPを追加または変更する際に全体を再コ ンパイルする必要がありません。PHPをApacheに(静的に)組み込む場合に は、PHPはより高速にロード/実行することが可能です。詳細な情報につ いては、ApacheのDSOサポートのWebページ を参照下さい。

注意: Apacheのデフォルトのhttpd.confは次のようなセクションがあります。

User nobody
Group "#-1"

これを"Group nogroup"やそれに類する値("Group daemon"も一般的です)に変更しない 限り、PHPはファイルをオープンすることができません。

注意: --with-apxs=/path/to/apxsオプションを 指定する場合にはインストールされているバージョンのapxsを指定してください。 Apacheのソースディレクトリ内にあるapxsバージョンではなく 実際にシステムにインストールされているものでなければなりません。

Windows上のApache 1.3.xへのPHPインストールの詳細

PHP を Windows 上の Apache 1.3.x で動作させるには、2種類の方法が あります。一つは、CGIバイナリ (php.exe) を使用する方法、もう一つ は Apache モジュールDLL を使用する方法です。どちらの場合も Apache サーバを停止し、PHP と組み合むように Apache を設定するために httpd.conf を編集します。

Windwos環境向けのSAPIモジュールはかなり安定してきているため、 互換性と安全性の面からも、CGIバイナリよりSAPIモジュールの 使用を推奨します。

Apache用にPHPを設定する手順にはいくつかありますが、この手順は入門 者にも使用可能な程簡単です。設定用ディレクティブに関する詳細につ いては、Apacheのドキュメントを参照下さい。

マニュアルインストール手順 のセクションに説明されたようにPHPパッケージをunzipで c:\php\に展開した場合、 CGIバイナリを設定するには以下の行をApache の設定ファイルに追加する必要があります。

上記の2番目の行は現在のバージョンのhttpd.confでも 確認できると思います。しかしそれはコメントアウトされています。 c:/php/を 実際のパスに合わせて置換することも忘れないでください。

警告

CGIセットアップを使用すると、 種々の攻撃にさらされる可能性があります。 CGI security section を読んで攻撃を防ぐ方法を学んでください。

PHPをApacheのモジュールとして使用したい場合、必ず php4ts.dllをwindows/system (Windows 9x/Meの場 合)またはwinnt/system32 (Windows NT/2000/XPの場合)ディレクトリに移 動し、以前のファイルを上書きするようにして下さい。 次に以下の行をApacheのhttpd.confファイルに追加して下さい。

設定ファイルを変更した後、サーバーを再起動することを忘れないで ください。例えば、ApacheをWindowsのサービスとして実行する場合には NET STOP APACHEの後にNET START APACHE。 あるいは通常のショートカットを使用してください。

ソースコードハイライト機能を使用する方法は二つあります。 しかしその機能はインストール方式に依存します。 PHPをSAPIモジュールとして使用するようにApacheを設定している場合、 httpd.confに次の行を追加してください (AddType application/x-httpd-php .phpを 追加したのと同じ位置です。上記を参照)。 AddType application/x-httpd-php-source .phps.

CGIバイナリとしてPHPを使用するようにApacheを設定している場合には show_source()関数を使う必要があります。 PHPスクリプトファイルを 作成し、次のようなコードを加えてください。 <?php show_source ("original_php_script.php"); ?> original_php_script.phpの部分を ソースを見たいと思うファイルの名前に置き換えてください。

注意: Windows版のApache においては、"c:\directory\file.ext" のようなパ ス設定におけるバックスラッシュは、"c:/directory/file.ext"のよう に全てスラッシュに変換する必要があります。