apacheでPHPモジュールを切り替えて使う方法
apacheでPHP5.2でテストしたり、PHP5.3でテストしたりしたい場合がある。apache起動時にそれを切り替える方法。
PHPのインストールに関して
コンパイルする際に、--prefixをそれぞれ変える。例えばphp5.2なら --prefix=/usr/local/php52 とし、php5.3なら --prefix=/usr/local/php53 として configure。
インストールでは、modules/libphp5.so としてPHPモジュールがインストールするわけだが、この名前を例えば、libphp5.2.soやlibphp5.3.soに変更しておくこと(configureでモジュール名を変更する方法を探してみたけどわからなかった;_;)。
なのでインストールの順番は、
1. PHP5.2をインストール( --prefix=/usr/local/php52)。
2. modules/libphp5.so を modules/libphp5.2.so に変更。
3. PHP5.3をインストール( --prefix=/usr/local/php53)。
4. modules/libphp5.so を modules/libphp5.3.so に変更。
となる。
apacheの設定ファイルの変更
apacheの設定ファイルhttpd.confにてPHPモジュールをロードするところを以下のように変更する。
<IfDefine PHP53> LoadModule php5_module modules/libphp5.3.so </IfDefine> <IfDefine PHP52> LoadModule php5_module modules/libphp5.2.so </IfDefine> #LoadModule php5_module modules/libphp5.so
最後の行は通常PHPをインストールした際に使用するLoadModuleディレクティブ。なのでこれをコメントアウトして、それぞれのバージョンのPHPモジュールのLoadModuleディレクティブをIfDefineディレクティブで囲む。
apacheの起動
- Dオプションに設定ファイルのIfDefineディレクティブで設定した名前を指定することでどちらかがロードされる。これで切り替えが可能となる。
PHP5.2をロードしたい場合
# /usr/local/apache2/bin/httpd -DPHP52
PHP5.3をロードしたい場合
# /usr/local/apache2/bin/httpd -DPHP53