1. TOPTOP
  2. Webサービス
  3. Linux

CentOS6.0でPHP5.3をインストールしたときの日本語設定について

|

PHP

この本読みながら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>';
?>

上記のコードを実行すると、こんな画面が返ってきます。

mbstringencoding

ところが、最初に私が実行すると画面には何も表示されず真っ白に!

また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

最後は設定の変更をお忘れなく!