[ Mac OS X ] PHPでmb関数を使えるようにする。
前にMacPorsを使ってインストールしたPHPでマルチバイト文字列関数(mb_なんちゃら)が使えなかったので、追加でパッケージを導入。
ターミナルを立ち上げて、パッケージを検索してみる。
するとリスト内に "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
$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.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
コメント