Mac OS X+PHPでオールインワン環境

インストール編 Mac内にPHP4、5、6を同居させるコツ

繁田 卓二
株式会社 qnote

2008/8/27

PHP 4のインストールと環境設定

 次はPHP 4のインストールです。ご存じのとおり、PHP 4.x系のサポートは2008年8月8日に終了しました。今後はセキュリティホールが見つかったとしても公式サイトからの修正リリースはありません。

 現時点ではPHP 5.2.x系の利用が強く推奨されていますので、PHP 4.x系をわざわざインストールする必要がないと思われるかもしれません。しかし、PHP 4.x系向けに作られたプロジェクトを抱えている場合、速やかに移行する必要がありますので、動作検証環境として持っておきたいところです。

 ビルドとインストールの手順はPHP 5と同じですが、そのままインストールするとPHP 5との共存ができません。これはApacheにPHPを認識させるためのMIMEタイプの記述が、PHP 4からPHP 6まですべて同じであることが原因です。これをバージョンごとに変えることにより1つのApache上で使い分けることができます。

 PHPのデフォルトでは「application/x-httpd-php」というMIMEタイプが割り当てられます。前項でインストールしたPHP 5はこのMIMEタイプでApacheに組み込まれました。これからインストールするPHP 4は、「application/x-httpd-php4」というMIMEタイプに変更しApacheに組み込みます。

 このMIMEタイプはPHPのソースコード内で定義されており、ビルドオプションなどで動的に変更することができません。ビルドする前にソースコード内のMIMEタイプ文字列を直接変更する必要があります。

 それではPHP 4.x系の最終リリースとなる4.4.9をダウンロードし、アーカイブを解凍します。

$ curl -o php-4.x.tar.gz -L http://jp2.php.net/get/php-4.4.9.tar.gz/from/this/mirror
$ tar zxvf php-4.x.tar.gz
$ cd php-4.x

 ApacheモジュールとしてのMIMEタイプの記述は、解凍したソースコードディレクトリ下のsapi/apache2handler/sapi_apache2.cファイル内に記述されています。この定数部分を「application/x-httpd-php4」に変更するだけです。

#define PHP_MAGIC_TYPE "application/x-httpd-php"
#define PHP_MAGIC_TYPE "application/x-httpd-php4"
sapi/apache2handler/sapi_apache2.c (60行目)

 このソースコードでビルドすれば、MIMEタイプを変更したPHP 4.4.9がApacheに組み込まれます。以下のconfigureオプションとともにインストールを実行しましょう。

$ ./configure --prefix=/usr/local/lib/php-4.4.9 \
 --with-apxs2=/opt/local/apache2/bin/apxs \
 --enable-mbstring \
 --with-iconv=/opt/local/ \
 --with-gd \
 --with-png-dir=/opt/local \
 --with-jpeg-dir=/opt/local \
 --with-zlib-dir=/opt/local
$ make
$ sudo make install

 インストール後の環境設定は、前項のPHP 5と同様ですので、php.iniの準備とinclude_pathの設定、コマンドラインツール群のエイリアス作成を行っておきましょう。

PHP 6のインストール

 最後はPHP 6です。現在、PHP 6はプレビューレベルの配布物がありませんが、開発版のスナップショットは毎日更新されています。ここではCVS上のすべての開発ブランチが2時間ごとにチェックアウトされパッケージ化されています。PHP 6も未リリースの開発版ですが、ソースコードはいつでもダウンロードが可能です。

関連記事:
リンク PHP Snapshots
http://snaps.php.net/

 PHP 6の新機能の目玉はUnicodeサポートです。正式に言語エンジンレベルで多言語化がサポートされます。これまでのPHPでもEUC-JPやUTF-8などの文字コードは使用可能でしたが、それらはmbstring拡張モジュールやiconvなどのおかげです。PHPのネイティブな関数群はほとんどがマルチバイト文字列について考慮されておらず、しばしばセキュリティホールとして指摘されることもあったくらいです。

 このUnicodeサポートを実現できたのは内部的にICU(International Components for Unicode)と呼ばれる外部ライブラリを使用しているからです。ICUはソースコードにバンドルされていませんので、今回はportコマンドでインストールします。ついでに最新のlibxml2パッケージも必要となるのでここでインストールしておきましょう。

$ sudo port install icu
$ sudo port install libxml2

関連記事:
リンク ICU Home Page
http://www.icu-project.org/

 後はPHP 4のインストールと同じ手順です。http://snaps.php.netより、php-6.0-devのアーカイブファイルをダウンロードし、解凍したフォルダ内に移動します。

 次にフォルダ内のsapi/apache2handler/sapi_apache2.cファイルを開き、MIMEタイプを変更します。PHP 6用のMIMEタイプとして「application/x-httpd-php6」と記述します。

#define PHP_MAGIC_TYPE "application/x-httpd-php"
#define PHP_MAGIC_TYPE "application/x-httpd-php6"
sapi/apache2handler/sapi_apache2.c (60行目)

 configureオプションは、--with-icu-dir、--with-libxml-dirオプションでそれぞれのライブラリへのパスを指定し実行します。エラーがなければmake、make installを実行しインストール完了です。

$ ./configure --prefix=/usr/local/lib/php-6.0.0-dev \
 --with-apxs2=/opt/local/apache2/bin/apxs \
 --enable-mbstring \
 --with-iconv=/opt/local/ \
 --with-gd \
 --with-png-dir=/opt/local \
 --with-jpeg-dir=/opt/local \
 --with-zlib-dir=/opt/local \
 --with-icu-dir=/opt/local \
 --with-libxml-dir=/opt/local
$ make
$ sudo make install

 インストール後はPHP 4と同様に環境設定を行っておきましょう。

3/4

Index
Mac内にPHP4、5、6を同居させるコツ
  Page1
ライブラリのインストール
PHPのインストール、その前に
  Page2
PHP 5のインストール
PHP 5の環境設定
Page3
PHP 4のインストールと環境設定
PHP 6のインストール
  Page4
拡張子でPHPのバージョンを変える
ディレクトリごとにPHPのバージョンを変える
バーチャルホストごとにPHPのバージョンを変える

Mac OS X+PHPでオールインワン環境

 Mac OS X関連記事
プログラマーを引き付けるMac OS Xの魅力
続々移行するそのワケとは
 Mac一筋という熱狂的なユーザーだけでなく、「面白いことをしたい」と考えるエンジニアもMac OS Xを利用し始めている。いったいなぜだろう
Mac OS XでAMP構築
3通りの方法で整備できる開発環境
 Mac OS Xの上にWebアプリケーションの定番、AMP(Apache+MySQL+PHP)環境を3通りの方法で導入してみましょう
Mac OS Xで動かす軽量プログラミング言語
導入からPHP拡張モジュール組み込みまで
 Leopardでは、インストール直後からいくつかの軽量プログラミング言語が利用できます。早速試してみませんか?
Objective-Cは特殊な言語?
Cocoaの素、Objective-Cを知ろう(1)
 iPhone用アプリケーション開発で注目を集める言語「Objective-C」。C++とは異なるC言語の拡張を目指したこの言語の基本を理解しよう
Mac内にPHP4、5、6を同居させるコツ
Mac OS X+PHPでオールインワン環境(インストール編)
 PHP4の開発は終了したが、移行の問題は残されている。異なるバージョンのPHPをスムーズに切り替えるには?
  Coding Edgeフォーラムフィード  2.01.00.91


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間