この本読みながらWebサービスの設計をば…。
と思ったらいきなりつまづいた。
そのときのつまづいた内容と解決方法を。(本文ではP43)
開発環境は以下の通りです。
- Linux(CentOS6.0)
- PHP5.3
問題の内容
[php]
<?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>’;
?>
[/php]
上記のコードを実行すると、こんな画面が返ってきます。
ところが、最初に私が実行すると画面には何も表示されず真っ白に!
また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
最後は設定の変更をお忘れなく!