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の設定箇所を以下のように編集

mbstring.internal_encoding = utf-8
mbstring.encoding_translation = Off
mbstring.http_input = auto
mbstring.detect_order = auto

(たぶんこれだけでいいはず、、、)

3. php.iniをFTPで /secure/内に適当なフォルダを作成してそこにアップロード

例) FTPルート/secure/wordpress/ ←ここにphp.iniをアップロード

※php.iniのファイル名は変更できないので、複数のWordpressを設置する際は別フォルダを作成して管理して下さい。

4.Wordpress以下の全てのディレクトリにphp.iniの設定を反映させるための[htaccess]という名前のテキストファイルを作成し、以下の1行を書いて保存する。

suPHP_ConfigPath /usr/home/(ユーザーID)/secure/(手順2で作成したディレクトリ)/
例)  suPHP_ConfigPath /usr/home/g123456/secure/wordpress/

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

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

ファイル構成はこんな感じになるでしょう。

/(ftp Root)
├[html]
│└[wordpress]
│ └ .htaccess
└[secure]
  └[wordpress]
   └ php.ini

余談)

.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に対応してくれたら個人的にありがたいんだけどなー。

この投稿にタグはありません。

関連する投稿

5 Comments

  1. Posted 2007/6/15 金曜日 at 6:55:51 | Permalink

    記事中で採り上げていただき、トラックバックもありがとうございます。
    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設定ですが

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

  2. Posted 2007/6/15 金曜日 at 14:15:54 | Permalink

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

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

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

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

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

  3. Posted 2007/7/24 火曜日 at 2:24:35 | Permalink

    我流@CGFMさんのこの記事を参考に、もう一度見直して見ました。
    トラックバックをつけましたので参考にしてください。

  4. MAL
    Posted 2010/6/18 金曜日 at 14:37:49 | Permalink

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

  5. Posted 2010/6/21 月曜日 at 13:37:15 | Permalink

    >MALさん
    お役に立てたようでなによりです。

4 Trackbacks

  1. By びぃらいぶの記録 on 2007/6/15 金曜日 at 6:34:10

    【技術メモ】WordPressをUTF-8でインストールする…

    さて、前回の続きです。
    前回、内部コードがEUC-JPのレンタルサーバにて、WordPressをUTF-8で扱いたい場合の対処方法をいろいろなサイトや掲示板を参考にし (more…)

  2. By びぃらいぶの記録 on 2007/7/24 火曜日 at 2:15:32

    【技術メモ】WordPressをUTF-8でインストールする…

    CPIでWordPressを利用しようとしたとき、どうしても初期設定ではEUC-JPしか使えない。以前、無理矢理UTF-8で動かすことを試みたがあまりにも無茶過ぎた。
    (more…)

  3. By BeLive on 2007/7/24 火曜日 at 2:21:59

    [WordPress]CPIのサーバでUTF-8で設定する方…

     WordPressでGoogle MapsなどのAJAXを利用しようとした場合、どうしても文字コードをUTF-8で作成しなければならない。
     しかし、現在 BeLiv (more…)

  4. [...] CPIでWordpress ME2.2が文字化けする [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

ソーシャルブックマークのコメント