BLOG

Mac ports で PHP 5.4 と PHP 5.5 を開発ターゲットにあわせて切り替える

Created at:
Category: Mac

(2019年9月21日: 投稿時から 5年以上経過しており、内容は参考にならないと思います。現在は Docker で環境を切り替えています)

うちのようなソフトウェアの受託開発に携わる事業者であれば、お客さんの要望によって PHP のバージョンが変わるのに柔軟に対応しなければならない。

例えば、現在開発中のシステムが PHP 5.5 で開発している途中だとする。 そこに、別のお客さんから、保守契約中のシステムのバグ報告があったとする。 そんなときには、一時的に PHP 5.4 に変更し、すぐにバグの原因を調べなければならない。

そのための仕組みが Mac Ports には存在している。以下のコマンドで、PHP 5.4 から PHP 5.5 への変更や、PHP 5.5 から PHP 5.4 への変更が簡単におこなえる。

PHP5.4 と PHP5.5 のインストール

最初に ports tree をアップデートしておく。

$ sudo port selfupdate && sudo port upgrade outdated
Password:
---> Updating MacPorts base sources using rsync
MacPorts base version 2.3.1 installed,
MacPorts base version 2.3.1 downloaded.
---> Updating the ports tree
---> MacPorts base is already the latest version

The ports tree has been updated. To upgrade your installed ports, you should run
port upgrade outdated
---> Computing dependencies for apr-util
---> Fetching archive for apr-util
(以下略)

まずは、PHP 5.4 のインストール。php54 以外に、Apache モジュールである php54-apache2handler もインストールする。その他の PHP 拡張モジュールのインストールは、各自の必要な物をインストールしていただきたい。

% sudo port install php54 php54-apache2handler

PHP 5.4 の Apache モジュールを有効にする。

% cd /opt/local/apache2/modules
% sudo /opt/local/apache2/bin/apxs -a -e -n php5 mod_php54.so
[activating module `php5' in /opt/local/apache2/conf/httpd.conf]

次に PHP 5.5 のインストール。5.5 用の Apache モジュール php55-apache2handler もインストール。

% sudo port install php55 php55-apache2handler

PHP 5.5 の Apache モジュールを有効にする。

% cd /opt/local/apache2/modules
% sudo /opt/local/apache2/bin/apxs -a -e -n php5 mod_php55.so
[activating module `php5' in /opt/local/apache2/conf/httpd.conf]

Apache モジュールの PHP 5.4 と PHP 5.5 を切り替え

上記手順で Apache の設定ファイルに、PHP 5.4, PHP 5.5 のモジュールが組み込まれている。下記コマンドで設定ファイルを開き、各モジュールの有効、無効を切り替える。

% sudo vi /opt/local/apache2/conf/httpd.conf

まずは PHP 5.4 を有効にする場合の変更箇所。以下のように mod_php55.so の行をコメントアウト。

LoadModule php5_module modules/mod_php54.so
#LoadModule php5_module modules/mod_php55.so

変更が終わったら Apache の再起動。

% sudo /opt/local/apache2/bin/apachectl restart

PHP 5.5 の Apache モジュールを有効にする場合は、mod_php55.so のコメントを外し、mod_php54.so をコメントにする。

#LoadModule php5_module modules/mod_php54.so
LoadModule php5_module modules/mod_php55.so

コマンドラインの php5.4 と php5.5 を切り替え

たまに、お試しプログラムをコマンドラインでチョコっと書いたりするが、コマンドラインの PHP のバージョンは以下の方法で変更可能である。

PHP 5.4 への変更。

% sudo port select php php54
Selecting 'php54' for 'php' succeeded. 'php54' is now active.
% php -v
PHP 5.4.32 (cli) (built: Oct 8 2014 15:59:13)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

PHP 5.5 への変更。

% sudo port select php php55
Selecting 'php55' for 'php' succeeded. 'php55' is now active.
% php -v
PHP 5.5.16 (cli) (built: Oct 8 2014 16:09:39)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

当然のことながら、PHP 5.3 や PHP 5.6 にも同様に切り替え可能である。