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 ] 以上でインストール作業は完了です。 動作確認 †
mbstring Multibyte Support enabled Multibyte string engine libmbfl Multibyte (japanese) regex support enabled Multibyte regex (oniguruma) version 3.7.0 ちょっと長くなってしましましたが、パッケージを再構築するほうが、おそらく手軽な方法です。これまでの RPM 版 PHP の環境を引き継ぎつつ、日本語にも対応させるには RPM 再構築が手軽、と思います。 時間がかかってしまいますが、腰を据えておためし下さい。 |