現在CentOS5をAmazon EC2で使っているのですが、マルチバイト文字列関数が入っていないために、PHPのエラーでハマってました。
マルチバイト関数を使えるようにインストールすればいいだけなのですが、ググッても断片的な情報しか出てこなかったり、PHPマニュアルの複製が一杯引っかかって、解決策がなかなか見当たらず、苦労しました。これが解決しないことには、PHPで日本語の文字列処理が出来ないのですが、本当に初歩中の初歩のレイヤーで躓いてしまいました。
今までは当たり前のように用意されているレンタルサーバーを借りていたので、こういう苦労をしなかったのですが、こういう時にレンタルサーバー屋さんの有難みを感じます。
それでは解決策について。
というか、CentOS5のPHPってデフォルトでmbstringが
入っていない。
yumでこの拡張モジュールをインストール
# yum install php-mbstring
Apacheを再起動
# /etc/init.d/httpd restart
これだけの為にかなりの時間を使ってしまった。。。
本当にこれだけのために時間をかなり使ってしまいました。
他の方法を見ていると苦労してそうだったのにあっさりと通過。
あとはphp.iniを編集します。
/etc/php.iniを開き、いくつか関係のありそうなところのチェックをします。「;」でコメントアウトされているのでそれを削除し、設定を書き込んで行きます。ここはお使いのアプリや作られるアプリに応じて調整してみてください。
ボクの場合の設定をメモしておきます。 細かい解説は他のサイトに譲ります。
[mbstring]
; language for internal character representation.
mbstring.language = Japanese
; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
mbstring.internal_encoding = UTF-8
; http input encoding.
mbstring.http_input = pass
; http output encoding. mb_output_handler must be
; registered as output buffer to function
mbstring.http_output = pass
; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
mbstring.encoding_translation = Off
; automatic encoding detection order.
; auto means
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
; substitute_character used when character cannot be converted
; one from another
mbstring.substitute_character = none;
といった感じです。
サーバー立てることに慣れている方は当たり前のことなんでしょうけど、それを経験してない人間にとっては未知の領域であり、それにチャレンジするスピリットが無いと、クリア出来ないものだなぁ、と改めて実感しました
コメント