CPIでWordPress ME2.2が文字化けする

個人サイトで借りてるレンタルサーバーCPIに WordPress ME2.2をインストールしたら文字化けして、半日近くハマったので解決方法をメモしておきます。

突っ込みや指摘などありましたらご遠慮なくコメントお願いしますm(_ _)m

原因はたぶん下の3点の絡み。

  • CPIのデフォルトのPHPの内部文字コードがEUC-JPのため
  • CPIのMySQL4の接続がEUC-JP
  • WordPress Me2.2(2.2.1の暫定版)がUTF-8 のみの対応となった

私の環境

解決手順

1.現状CPIで動いているPHPの設定ファイルphp.iniのコピーを作成

参考)PHPの設定を変更する

CPI のコントロールパネルの【お客様情報】から、【プログラムのパスとサーバの情報】をクリックし、使用するPHPと同じバージョンのphp.ini情報をテキストファイルにコピーする

2. 作成したphp.iniの内容でmbstringの設定箇所を以下のように編集
[text]mbstring.internal_encoding = utf-8
mbstring.encoding_translation = Off
mbstring.http_input = auto
mbstring.detect_order = auto[/text](たぶんこれだけでいいはず、、、)

3. php.iniをFTPで /secure/内に適当なフォルダを作成してそこにアップロード
[text]例) FTPルート/secure/wordpress/ ←ここにphp.iniをアップロード[/text]
※php.iniのファイル名は変更できないので、複数のWordpressを設置する際は別フォルダを作成して管理して下さい。

4.Wordpress以下の全てのディレクトリにphp.iniの設定を反映させるための[htaccess]という名前のテキストファイルを作成し、以下の1行を書いて保存する。
[text]suPHP_ConfigPath /usr/home/(ユーザーID)/secure/(手順2で作成したディレクトリ)/
例) suPHP_ConfigPath /usr/home/g123456/secure/wordpress/[/text]

5. [htaccess]ファイルをWordpressをインストールしたディレクトリにアップロードして、[.htaccess]とファイル名を変更する。

上記の手順で、たぶん上記で文字化けは解消すると思います。
投稿テストなどで文字化けしないか確認してください。

ファイル構成はこんな感じになるでしょう。
[text]/(ftp Root)
├[html]
│└[wordpress]
│ └ .htaccess
└[secure]
  └[wordpress]
   └ php.ini[/text]

余談)

.htaccessを使いたく無い人は、php.iniファイルをWordpress内の全てのディレクトリにコピーを置けばそれでも大丈夫です。
ただplugin入れる度に面倒になりますのでお勧めしません。

今回いろいろ調べた所感)

まずググるとWordpress Japanのフォーラムのトピックスがすぐ引っかかった。

.htaccessで[php_flag][php_value]を使ってphp.iniの設定を変更する方法でしたが、なんとこの方法はCPIではエラーが出るようにセキュリティ面で制限がかかっていました。

CPI:PHPの設定を変更するで以下のように書かれてます。

◆注意◆
弊社サーバーでは .htaccessファイルにてphp_valueおよびphp_flag はご利用いただけません。
記述が .htaccessファイルにある場合、500エラー(Internal Server Error)となってしまいますのでご注意ください。

一体CPIがいつからこうなったか分からないのですが、CPI上でWordpressをデフォルトのままで利用するにはphp.iniを使うしか手段が無い事になります。

あと大変参考になったサイト。
びぃらいぶの記録:【技術メモ】WordPressをUTF-8でインストールする(完結編) – livedoor Blog(ブログ)さんのコメントでのやりとりでした。

記事自体はwp-config.phpに手を加える手法でしたが、この手法だとplugin関係が怪しくなる恐れがありますので、Wordpressを動かす全体のディレクトリをphp.ini+.htaccessでまとめて設定した方が楽で確実じゃないかなと思います。

しかし、CPIはMySQLの文字コードをUTF-8に変えれないのか、、、MySQL5だったらいけるのかな。

CPIのMySQLのデータベース数は1個だけど、MySQl4と5は同時に使えないってことなんだろうな。
新しいデータベース使いたかったらPostgreSQLになるのかな。
WordpressがSQLiteに対応してくれたら個人的にありがたいんだけどなー。

CPIでWordPress ME2.2が文字化けする” への10件のフィードバック

  1. ピンバック: びぃらいぶの記録
  2. 記事中で採り上げていただき、トラックバックもありがとうございます。
    wp-config.phpの変更ですが、今のところプラグインの不具合はほとんどありません。
    しかし、php.iniを変更するのが正当かも
    (但し、OpenPNEとかXoopsを並行稼働しているときには、php.iniをいくつか分けなくてはなりませんが…)

    問題はやはりMySQLがEUC-JPでしか使えなかったこと。
    MySQL5で、文字コード変更のalter databaseを送るのですが受け付けてくれないようですし…
    すべてのテーブルをUTF-8指定するのも…
    ちなみにMySQL4と5の並行利用は問題ないようです。ホスト名を「localhost」ではなく「127.0.0.1:3307」でOKのようです。
    今、CPIのテストサーバで「wordpress ME」をMySQL4、「wordpress MU」をMySQL5で動かしています。
    どちらもEUC-JP設定ですが

    長くなりましたが、これからもよろしくです。

  3. MOO@Beliveさん、コメントありがとうございます。

    >wp-config.phpの変更ですが、今のところプラグインの不具合はほとんどありません。
    そうなんですね。私は試してなかったですが情報ありがとうございます。

    >(但し、OpenPNEとかXoopsを並行稼働しているときには、php.iniをいくつか分けなくてはなりませんが…)
    そうなんですよねー。他のサービス等との並行稼働時は分けた方がいいと思ったんです。

    >ちなみにMySQL4と5の並行利用は問題ないようです。
    おー!貴重な情報ありがとうございます!
    試す前だったので助かりました。
    でもEUC-JPなんですよね、、、(泣

    コレからも宜しくお願いします。

  4. ピンバック: びぃらいぶの記録
  5. ピンバック: BeLive
  6. 我流@CGFMさんのこの記事を参考に、もう一度見直して見ました。
    トラックバックをつけましたので参考にしてください。

  7. この解決法を探していました!
    非常に助かりました。
    ありがとうございます!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


*