Wordpress--EUCからUTF8への移行方法

WordpressとMySQLの文字コードの不整合が起こっていたのですが、ようやく復旧しました。 ひっそりとサーバー移転。MySQL4→5になり、文字コードもUTF-8にしました。

管理画面へのアクセスに異常に時間がかかっていたのですが・・・これも解決しました。 快適です。

移行後の環境は Web:Apache1.3.37 PHP5.1.6 MySQL5.1.11

以下、解決方法の紹介です。ちょっと長いですが、ご容赦ください。

1.現象 まず、最初のサーバーでの設定。 Wordpress:EUC-JP MySQL:EUC-JP
MySQLはEUC-JPを指定して作成したのですが、なぜか照合順序がUTF-8に。 初アクセス時にページが表示されない、管理画面に一回では繋がらない等の不具合が出てました。 Technorati (テクノラティ) の表示リンクも文字化け状態。

そこで、文字コードを揃えて設定しなおすことにしました。

2.データ移行 今度はUTF-8にしようと思い、サーバーアカウント取得。 Wordpress:UTF-8 MySQL:UTF-8 で設定し、旧サーバーでMySQLのバックアップを行う。

旧MySQL→新MySQLへデータを移行。 phpMyAdminのエクスポートとインポートを利用してます。 そのままエクスポート→インポートを行うと、文字コードがEUC-JPのままになり、MySQL内で文字化けが発生。 エクスポートされたSQL文をちょいと修正 DEFAULT CHARSET=utf8 おし、無事インポートできました。

3.文字化け対応 表示してみると・・・やはり文字化けが発生。 power source* » XREAにUTF8設置時の文字化け: 4)設置方法まとめ を参考にして修正。うまく表示されました。

4.権限のエラー解消 さて、設定を変えよう・・・あれ?管理画面に入れない? ログインすると、下記のエラーが画面上部に表示される。

Warning: Invalid argument supplied for foreach() in (サーバーのディレクトリ)/wp-includes/capabilities.php on line 19

かろうじて管理画面のTOPが表示される。上記エラーはやっぱり表示されてる。 管理画面以下の投稿・設定画面にアクセスしようとすると・・・

Warning: Invalid argument supplied for foreach() in (サーバーのディレクトリ)/wp-includes/capabilities.php on line 19 あなたはこのページにアクセスする権限を持っていません。

capabilities.phpの19行目に一体何があるんだ!と思いつつ、フォーラムで同じ問題を発見。 WordPress Japan :: トピックを表示 - WPをインストールしてログインすると権限エラーになってしまいま

返信にこうあったのが大ヒントになりました。

新規インストール時に文字コードをUTF-8でインストールすると 日本語の権限表記にバックスラッシュが付与されてしまうようです。 **_option テーブルの **_user_roles の値を編集していただければ解決すると思います。
早速user_rolesを見てみたら・・・あった! 日本語権限名が全部文字化けしてる!

同様に提示されていた、 http://wordpress.xwd.jp/files/utf_patch.zip を使用したところ、うまく修正されました。

6.終わりに 無事管理画面も使えるようになり、こうして投稿できたわけです・・・ 最近は日本語の資料もだいぶ増えてきたので、そこそこスムーズに解決できました。