WordPressのアップグレード作業

新しいバージョンが出たのでアップグレードしました。今まで使っていたのは、ME 2.1.3でした。これをME 2.2.1にアップグレードしました。このときに、はまった事をまとめておきます。

大きな問題がありました。新しいバージョンから文字コードがUTF-8のみ対応となり、EUC-JPが使えない。今までは、EUC-JPで運用していたのでデータをUTF-8にコンバートしなければなりません。

スポンサーリンク




不具合現象

手順どおりで普通の画面の表示までできました。問題は、管理画面にログインするときに発生しました。正しい、IDとPassWordを入力しているのにログインできません。権限エラーになってしまいます。

ネットで調査してところ、以下の内容を発見。実施してみました。

対策その1

wp_optionテーブルの項目option_name=wp_user_rolesとなっている列の項目option_valueの値の不整合が原因。この値のフォーマットは、s:数字:”権限ロール名”となっています。この数字と権限ロール名のバイト数が一致していないためにログインできない。

EUCでは、漢字1文字2バイトでUTF-8では、3バイト。この差で不整合が発生し、UTF-8変更時にログインできなくなるようです。例えば、はじめにEUCで動いているので、s:6:”管理人”と作成されます。UTF-8では、本来、s:9:”管理人”となるべきです。

対応としては、数字の値を正しくすれば、よいとの事。やってみたけど直らない。この時点で、お手上げです。

対策その2

あきらめる前に、もう一点、気になる作業を実施したことを思い出しました。それは、接頭語の変更です。mysqlのテーブル名先頭のwpは、セキュリティー上よくないとのこと。上記の、文字コード変更手順にも接頭語の変更方法まで書かれていました。そのとおりに作業しwpをutfに変更しました。気になる点は、先の「wp_user_roles」は、「utf_user_roles」と違うのか?というところです。

調査した結果、ほかにもありました。utf_usermetaテーブルの項目meta_keyに「wp_capabilities」と「wp_user_level」という値を発見。grepかけた結果、この3つの値は、wpからutfに変換したほうがよさそうでした。というこてで、変換すると見事にログイン成功。無事アップグレードできました。

その後、問題発覚。WordPressとは、直接関係ないのですが。次回へと続く。

スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする