php::Apacheに複数バージョンのphpを共存させる
php4からphp5への過渡期に、一部で常識になっていた作業ですが、わすれてました。
参考:
Apache2で複数バージョンのPHPを使い分ける - エーエイチレフ linuxサーバー技術情報
【要点】
- Apache2系のhttpd前提である。(ただし1.3.x系でも同様に実現可能)
- 普通にmod(モジュール)版インストールしたphpが動いている前提。
- httpd.confに ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin" といった感じでCGI動作領域が設けられている前提。
- 動作構造(1)⇒追加するphpバージョンを、cgi版としてインストールする。
- 動作構造(2)⇒エイリアス:/cgi-bin/内で、シンボリックリンクを有効にする。(有効でなくてもやりようはあるが)
- 動作構造(3)⇒エイリアス:/cgi-bin/内に、cgi版phpプログラム(/path/to/php/bin/php-cgi)へのリンクを置く。(リンクできなければ実体を複写)
- 動作構造(4)⇒ディレクティブを操作して、*.phpのファイルが、/cgi-bin/php-cgiに送られて動作するようにする。(.htaccessで操作できるようにすると便利)
CGI版のPHPをmake installする際の留意点
configureの際に --with-apxs2=/usr/local/apache2/bin/apxsを付けない事が重要です。 これを付けるとApacheのモジュール版としてPHPがconfigureされてしまいます。 このオプションをつけなければ勝手にCGI版としてインストールされます。 その他のオプションはご自身の環境に合わせて適宜修正していただくとして、 複数インストールの際に重要となってくるのは以下のオプションになります。 --prefix=/usr/local/lib/php-5.*.* インストールするディレクトリを明示的に指定します。 ここでは "/usr/local/lib/php-5.*.*" にインストール先を指定しています。 --with-config-file-path=/usr/local/lib/php-5.*.* コンフィグファイルのパスも明示的に指定しています。 --program-suffix=4 必須ではないのですがこのオプションを付けるとファイルの語尾に特定の文字を付加させる事ができます。 管理が複雑にならないようにする為、今回のプログラムのファイル名の語尾へは「4」と追加させるようにしています。 ここまででエラーがなくconfigureできたらインストールします。
# configureのサンプル # ⇒ オプション項目は、稼働中のバージョンのphpinfo()の値を参考にして付けていく。 # ⇒ [root@hoge ~]% less /usr/local/src/php-5.5.34/original.configure.php.sh ## PHP configure : 201x-xx-xx #!/bin/sh ./configure \ --prefix=/usr/local/lib/php-5.5.34 \ --with-config-file-path=/usr/local/lib/php-5.5.34 \ --with-mysql=/usr/local/mysql \ --enable-track-vars \ --enable-zend-multibyte \ --enable-mbstring \ --enable-bcmath \ --enable-trance-sid \ --with-openssl=/usr \ --with-zlib-dir=/usr/include \ --enable-gd-native-ttf \ --enable-gd-jis-conv \ --with-gd \ --with-jpeg-dir=/usr/local/lib \ --with-png-dir=/usr/local/lib \ --with-tiff
CGIとして実行できるように
cgi版としてmake installした phpのcgi版バイナリを、cgi-bin/ から参照できるようにする。
"php-cgi"という名称のバイナリファイルが、cgi版のバイナリ。"php"という名称のファイルはモジュール版のバイナリなので注意。
テスト環境であれば、cpしてしまっても支障はない。
cd /usr/local/apache2/cgi-bin/ ln -s /usr/local/lib/php-5.*.*/bin/php-cgi php5
拡張子と実行プログラムの関連付け
#httpd.conf や .htaccess で下記のように指定 AddHandler php5.*.*-script .php .html Action php5.*.*-script /cgi-bin/php5