[ Mac OS X ] PHPでmb関数を使えるようにする。

前にMacPorsを使ってインストールしたPHPでマルチバイト文字列関数(mb_なんちゃら)が使えなかったので、追加でパッケージを導入。

ターミナルを立ち上げて、パッケージを検索してみる。

$ port list php*

するとリスト内に "php5-mbstring" というのが出てくるので、これをインストールする。

$ sudo port install php5-mbstring

管理者パスワードを尋ねられて、インストール開始。依存するいくつかのパッケージと共に、順調にインストールが進んでゆきます。

インストール終了直前に「この設定のままだと使えないから、php.iniを編集してね。extension_dir = "./" という行を消せば良いよ(意訳)」というメッセージが英語で表示されるので、その通りにしてみる。ちなみにMacPortsを使ってインストールしたならば、php.iniは /opt/local/etc/php5/ にある筈。

picoだのnanoだのviだの、いつも使っているエディタでphp.iniを開いて「extension_dir = "./"」の行を探してコメントアウト。

Apacheを起動して、自分の "サイト" フォルダに適当に書いたphpファイルを置いてブラウザからアクセスしてみる。

http://localhost/user_name/test.php
<?php

 $str = "あいうえおかきくけこ";
 $sc = mb_strlen( $str );
 for( $i = $sc ; $i >= 0 ; $i-- ){
     $c = mb_substr( $str , $i , 1 ,'utf-8');
     print $c;
 }

?>

「Fatal error: Call to undefined function mb_xxx() in /Users/user_name/Sites/test.php on line xx」などという関数未定義エラーが出る事も無く、無事に

こけくきかおえういあ

という文字列が出力されました。これにて設定とチェックは終了。

php.iniには内部文字コードなどを設定する項目もありますが、ひとまずは触らずにキープ。だってちゃんと動いたんだもん。何か問題が生じたら、また弄ってみましょう。

ちゃんと動かなかったので(w、設定。

php.iniの1187行目あたりに [mbstring] パラメータ設定を行っているセクションがあるので、そこを書き換えます。文字コードはUTF-8でいきましょう。行頭の ";" を削除して、

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC_JP,JIS,ASCII
mbstring.substitute_character = none;
mbstring.func_overload = 0

ひとまずこれで良いみたい。参考にさせて頂いたのはコチラ。
  → 日本語利用の為の設定(mbstring) - php.iniの設定

php.iniを弄れない場合はPHPスクリプト側からこれらの値を設定 / 取得する関数が用意されています。mb_language , mb_internal_encodingなどなど。詳しくはオンラインマニュアルで。

  → PHP: マルチバイト文字列 関数 - Manual

  

カテゴリ: