Pocketstudio.jp Linux Wiki


PHP マルチバイト関数への対応方法

RPM の PHP は英語圏オンリー

 RPM パッケージで提供されている PHP はマルチバイトに関する関するが組み込まれていません。対応させるためにはソースから PHP を構築するか、SRPM を元に RPM パッケージを再構築するという方法があります。

 このページでは SPRM を元に日本語に関する configure のオプションをつけた RPM の構築、インストール方法を紹介します。

 作業は基本的に

--enable-mbstring \
--enable-mbregex \
--enable-zend-multibyte \

 この3行を PHP に対して認識させるための作業となります。

RPM パッケージの構築作業

 まず、ソースを取得して、spec ファイルという RPM の設定素となるファイルを開きます。ファイルのバージョンは今日現在(2006/05/21)のものです。バージョン番号が違うとファイルがダウンロード出来ないとおもいますので、すみません、その時は作者にご連絡下さい。ページを直します。

# cd /usr/local/src/
# wget http://ftp.riken.go.jp/Linux/fedora/core/updates/4/SRPMS/php-5.0.4-10.5.src.rpm
# rpm -ivh php-5.0.4-10.5.src.rpm

 これでソースパッケージのインストールが終わりました。次に SPEC ファイルという RPM パッケージの素となるファイルを編集します。

# vi /usr/src/redhat/SPECS/php.spec

 ファイルを開いたら 453 行目に以下の行を追加します。

         --enable-mbstring \
         --enable-mbregex \
         --enable-zend-multibyte \

 これで準備は完了です。

 次に RPM パッケージの再構築となる訳ですが、通常、全ての関連パッケージをインストールしていない限り、以下のようなエラーがでます。コマンド rpmbuild を実行してみます。

# rpmbuild -bc /usr/src/redhat/SPECS/php.spec
エラー: Failed build dependencies:
    aspell-devel >= 0.50.0 is needed by php-5.0.4-10.i386
    libjpeg-devel is needed by php-5.0.4-10.i386

 これは、aspell-devel や libjpeg-devel が PHP コンパイル時に必要となるパッケージです、という意味があります。つまり、インストールしなくてはいけません。

# yum -y install パッケージ名

 このコマンドをパッケージ毎に実行して、必要とされるパッケージを全てインストールします。

 インストールが終わったら、再びパッケージの作成です。

# rpmbuild -bc /usr/src/redhat/SPECS/php.spec

 ちょっとコンパイルには時間がかかると思います。コーヒータイムですね。

終わったらインストール済みの PHP パッケージを削除します(依存関係の問題が発生するため)。

# yum remove php

 終わったら、PHP 関連の RPM をインストールします。

# rpm -ivh /usr/src/redhat/RPMS/i386/php*.i386.rpm

 その後、apahce の再起動をして設定が有効になります。

# /sbin/service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]

 以上でインストール作業は完了です。

動作確認

? phpinfo(); ?> を記述したファイルにブラウザからアクセスすると、以下のように Multibyte Support の行が追加されていると思います。

mbstring
Multibyte Support enabled 
Multibyte string engine libmbfl 
Multibyte (japanese) regex support enabled 
Multibyte regex (oniguruma) version 3.7.0 

ちょっと長くなってしましましたが、パッケージを再構築するほうが、おそらく手軽な方法です。これまでの RPM 版 PHP の環境を引き継ぎつつ、日本語にも対応させるには RPM 再構築が手軽、と思います。

時間がかかってしまいますが、腰を据えておためし下さい。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Sun, 21 May 2006 04:43:27 JST (4027d)