CentOS6.0でPHP5.3をインストールしたときの日本語設定について
目次
この本読みながらWebサービスの設計をば…。
と思ったらいきなりつまづいた。
そのときのつまづいた内容と解決方法を。(本文ではP43)
開発環境は以下の通りです。
- Linux(CentOS6.0)
- PHP5.3
問題の内容
<?php //! マルチバイト関数を使うサンプル mb_internal_encoding('UTF-8'); $s1 = 'うらにわにはにわにわにはにわにわとりがいる'; // 文字数を取得する $n1 = mb_strlen($s1, 'UTF-8'); // 12バイトに収まる文字列を取得する $s2 = mb_strcut($s1, 0, 12, 'UTF-8'); // にわ の出現回数を求める $n2 = mb_substr_count($s1, 'にわ', 'UTF-8'); // 文字列を置換する $s3 = preg_replace('/にわにはにわ/u', '庭には二羽、', $s1); $n1 = '文字数は、' . $n1; $s2 = '12バイトに収まる文字列は、' . $s2; $n2 = 'にわ の出現回数は、' . $n2; echo htmlspecialchars($s1, ENT_QUOTES, 'UTF-8'), '<br><br>'; echo htmlspecialchars($n1, ENT_QUOTES, 'UTF-8'), '<br>'; echo htmlspecialchars($s2, ENT_QUOTES, 'UTF-8'), '<br>'; echo htmlspecialchars($n2, ENT_QUOTES, 'UTF-8'), '<br><br>'; echo htmlspecialchars($s3, ENT_QUOTES, 'UTF-8'), '<br>'; ?>
上記のコードを実行すると、こんな画面が返ってきます。
ところが、最初に私が実行すると画面には何も表示されず真っ白に!
またxamppでは、phpinfo()関数を使うと、php.iniに
関する設定がずらずら出てきて、その中に”mbstring”に
関する設定も出てきます。
ところが自分でサーバーで立てた方には、
“mbstring”に関する設定がでてこない。
問題の解決
PHP本体のインストールの他に日本語使用のためのモジュールが必要
いろいろ調べているうちに、このサイトに行き当たりました。
502 – Blog Bad Gateway
CentOS6.0にPHP5.3をインストールして基本的な設定をする。日本語の設定についても書いています。
問題の解決のためにはおおざっぱに分けて
次の3つの作業が必要です。
1.# yum install -y php-mbstring
サーバー上にインストールするときに、
php-mbstringという日本語設定のためのモジュールが必要。
# yum install -y php
# yum install -y php-mysql
しかインストールできていなかったのがまずかった模様。
2.php.ini[mbstring]の設定変更
mbstring.language = Japanese
(コメントアウトを解除)
mbstring.internal_encoding = UTF-8
(mbstring関数のデフォルト文字コード)
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
(文字コードの自動判別の優先順位)
とくに今回はmb_internal_encoding(‘UTF-8’);を
使っているので、2番目のmbstring.internal_encodingの
設定が、コードを使えるようにするためのポイントだったかも。
3.# service httpd restart
最後は設定の変更をお忘れなく!