- 締切済み
PHPマルチバイト文字列関数
FedoraCore4のPHP-version5.0.4 rpmをインストールしたのですが、マルチバイト文字関数が標準になっていないのでマルチバイト文字関数が使えるようにしたいのです。 今のところ一度PHPをアンインストールして、ソースを落としてきて、configureの時にオプションで指定して対応しようかと考えています。 しかし、超初心者ですのでもう少し簡単な方法を探しています。ご存知の方はぜひご教授いただきたいと思います。 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- zem
- ベストアンサー率70% (51/72)
こんにちは、まずはじめにソースからのコンパイルと RPM のリビルド(RPMパッケージを作り直す)という2つの方法があります。が、どちらも荊の道です(^^; ソースからでしたら configure 時に --enable-mbstring \ --enable-mbregex \ --enable-zend-multibyte \ この3行を加えるようにしてみてください。あとは必要に応じて他のアプリケーションも --enable~ や --with~ で指定する必要があります。いまどんな configure が指定されているかは <? phpinfo(); ?> とだけ書いたページを設置して上から3段目「Configure Command」の部分を参照してください。 ちなみにソースからインストールしようとしても、パッケージの必要性などから Configure Command 通り configure に実行してもエラーになります。 RPM パッケージと同じような構造でマルチバイトに対応させたい!という場合は、パッケージ毎まるごと再構築する方法がおすすめです。以下、ちょっと長いです。 まず、ソースを取得して、spec ファイルという RPM の設定素となるファイルを開きます # cd /usr/local/src/ # wget http://ftp.riken.go.jp/pub/Linux/fedora/core/4/i386/os/SRPMS/php-5.0.4-10.src.rpm # rpm -ivh php-5.0.4-10.src.rpm # vi /usr/src/redhat/SPECS/php.spec 次にファイルの 453 行目に以下の項目を追加します。 --enable-mbstring \ --enable-mbregex \ --enable-zend-multibyte \ これで準備は整いました。 # 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 再構築が手軽、と思います。 時間がかかってしまいますが、腰を据えておためし下さい。