[[Pocketstudio.jp Linux Wiki]]
 #contents
 ----
 * PHP マルチバイト関数への対応方法 [#q7d973ab]
 ** RPM の PHP は英語圏オンリー [#e40d1783]
 
  RPM パッケージで提供されている PHP はマルチバイトに関する関するが組み込まれていません。対応させるためにはソースから PHP を構築するか、SRPM を元に RPM パッケージを再構築するという方法があります。
 
  このページでは SPRM を元に日本語に関する configure のオプションをつけた RPM の構築、インストール方法を紹介します。
 
  作業は基本的に
 
  --enable-mbstring \
  --enable-mbregex \
  --enable-zend-multibyte \
 
  この3行を PHP に対して認識させるための作業となります。
 
 ** RPM パッケージの構築作業 [#hd56305c]
 
  まず、ソースを取得して、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 ]
 
  以上でインストール作業は完了です。
 
 ** 動作確認 [#p7e32b80]
 
 <? 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