WordPressを別サーバに移行する作業で、プラグインエラーが発生し管理画面にログインできないことがあり、その際にデータベースから直接問題のプラグインを無効にしたのでその方法をメモしておきます。
今回問題になったのはWordPress ? EasyTube for Youtube & Vimeo ? WordPress Pluginsというプラグインで、古いバージョンを使っていたため新しいサーバのPHPバージョンに適合しなかったようです。
データベースから一旦無効にして、WPの管理画面からバージョンアップした上で有効にします。
optionsテーブルのactive_pluginsパラメータを修正する
WPの入っているデータベースの[プレフィックス]_optionsテーブルでoption_nameがactive_pluginsのoption_valueを修正します。
修正前
a:10:{i:0;s:23:”admin-theme-preview.php”;i:1;s:10:”brBrbr.php”;i:2;s:21:”easytube/easytube.php”;i:3;s:43:”google-analyticator/google-analyticator.php”;i:4;s:19:”lightbox/plugin.php”;i:5;s:25:”mobile_eye/mobile_eye.php”;i:6;s:27:”php-code-widget/execphp.php”;i:7;s:47:”resize-at-upload-plus/resize-at-upload-plus.php”;i:8;s:27:”wp-cleanfix/wp-cleanfix.php”;i:9;s:41:”wp-multibyte-patch/wp-multibyte-patch.php”;}
修正後
a:9:{i:0;s:23:”admin-theme-preview.php”;i:1;s:10:”brBrbr.php”;i:2;s:43:”google-analyticator/google-analyticator.php”;i:3;s:19:”lightbox/plugin.php”;i:4;s:25:”mobile_eye/mobile_eye.php”;i:5;s:27:”php-code-widget/execphp.php”;i:6;s:47:”resize-at-upload-plus/resize-at-upload-plus.php”;i:7;s:27:”wp-cleanfix/wp-cleanfix.php”;i:8;s:41:”wp-multibyte-patch/wp-multibyte-patch.php”;}
この値はPHPでシリアライズされた値が入っており、解説すると文頭のa:10:
の部分が、配列の要素数。つまり有効なプラグイン数になります。
{}内は、配列の要素。つまり有効にするプラグインの記述になっており、i:0;
部分が配列の添字。s:23:
は、string型23バイトとなります。(多分)
今回はひとつプラグインを無効にするので、a:10:
はa:9:
に。
そして、配列要素のうちs:21:"easytube/easytube.php";
の部分を削除し、後に続く要素のi:[添字]:
部分をデクリメントしてやります。
この時シリアライズした値が正しい形式にならないとunserializeした時に正しく復元できなくなるためプラグインが有効にならないので注意しましょう。
今回のケースでは、easytubeを無効にするだけで管理画面にアクセスできるようになりましたが、複数のプラグインでエラーが出ている場合には、上記の方法で複数のプラグインを無効にするか、あまりにも多い場合にはactive_pluginsを空にしてしまって、管理画面にログインしてからプラグインの挙動を見ながら有効にしていくといいと思います。
easytubeプラグインも管理画面からアップデートし、有効にすることで問題なく使えるようになりました。