EC-CUBEをMySQLで動かして文字化けが起こるとき
EC-CUBEの消費税計算の記事は、このブログの人気エントリなのですが、今日はEC-CUBEをCPIの共用サーバに自力でインストールする時のTipsを(鳥頭な自分のために)書き残しておこうと思います。ちなみにCPI提供のインストーラを使う場合はこの限りではありません。もっと簡単です。
1. .htaccessの準備
CPIはPHPファイルをそのまま設置しても動きません。.htaccessに次のように書きます。
AddHandler x-httpd-php524 .php
ついでにphp.iniもカスタマイズすることが出来ますので、下のような文を追加することにします。(ユーザーホームにconfというディレクトリを作ってphp.iniを置く場合。設置場所のパスを書く)
suPHP_ConfigPath /usr/home/(ユーザーID)/conf/
2. php.iniのカスタマイズ
次はphp.iniを編集しますが、デフォルトから変更する部分だけ書いておいておけばよいです。
output_handler = mb_output_handler register_globals = Off ;post_max_size = 8M magic_quotes_gpc = Off upload_max_filesize = 5M ;session.use_cookies = 0 ;session.use_trans_sid = 1 mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.encoding_translation = On
3. EC-CUBEをMySQLで動かす時の文字化け対策
これで普通にインストール出来たりするんですが、管理画面にログインすると「管理者」が「管????」になったり、文字化けが発生するのです。これにはかなり手こずりました。おそらくPHPとMySQLの文字コードがらみでうまくいってないことが想像されるものの、さて、どうしたらよいやらとphpMyAdminとにらめっこしたり、ネットをさまよって十数分。やっと見つけてきたのが、こちらの記事。
data/class/SC_DbConn.php
の $this->conn = $objDbConn; の下にif ($this->conn instanceof DB_mysql) { $this->conn->query("SET NAMES 'utf8'"); }を追加。
PHP 5.2.4
MySQL 5.0.45
の環境にインストールできました。
素晴らしい…が、ちょっと待って。SET NAMESって使っちゃいかんのではなかったっけ?と、思って調べてみるとこんなことが書いてありました。
・どうすれば安全なのか
PHP5.2.3以降の場合なら → mysql_set_charset()を使えばOK
PHP5.0.5以降でmysqliを使用しているなら → mysqli_set_charset()を使えばOK
PHPからSET NAMESを使わない方が良い理由と対策まとめ – twk @ ふらっと
なるほどねえ。というわけで、件の ‘/data/class/SC_DbConn.php’ を開いてみましょう。(下の行番号は1からだけど65行目辺り)
//MySQL文字化け対策(MySQLで文字化けする場合は以下のコメントアウトをはずして動作確認してみてください。)
//if (DB_TYPE == 'mysql') {
// $objDbConn->query('SET NAMES utf8');
//}
おい、SET NAMES使ってるじゃん…。というわけで、以下のように書き直し。
//MySQL文字化け対策(MySQLで文字化けする場合は以下のコメントアウトをはずして動作確認してみてください。)
if (DB_TYPE == 'mysql') {
mysql_set_charset("utf8");
}
これで、一件落着。文字化けもせず、インストールは完了です。
あ、でもまだ本番に近づくにつれて不具合が出るかもしれません。その時は逐一このブログで報告(というか自分用にメモ)したいと思います。
関連(していると思われる)記事:
Archives
Flickr
Bookmarks- WordPress3.0子テーマで、パス指定にbloginfo(‘template_url’)は使えない | マイペースクリエイターの覚え書き[…]
- 初めてWordPressテーマをカスタマイズする時に参考になる作り方の解説まとめ8つ - W3Q[…]
- webサイトの企画書や提案書のサンプルを見たいのですが、提案書や企画書がまとめられているサイト等知っている方がいましたら教えていただけないでしょうか? - W3Q[…]
- CPIレンタルサーバーでApache mod_rewriteの設定方法|ほっとのブログOptions +FollowSymLinks を.htaccessに設定する […]
- CPIでWordpressの日本語が入力できない - hiromitz @ blog for designing and developmentphp.iniでUTF-8を指定してあげるとよい […]
- WordPress3.0子テーマで、パス指定にbloginfo(‘template_url’)は使えない | マイペースクリエイターの覚え書き






