WordPressのメジャーアップデートに失敗する時の対処法。
WordPressのメジャーアップデートに失敗する時の対処法
これは俺だけが得する備忘録になります。
公安9課はエックスサーバー+WordPressで運用していますが、2017年11月1日午前4時頃まではWordPresss 4.5.6で動いていました。なぜWordPress 4.7や4.8にアップデートしなかったのかというと、以前に自動でWordPressのアップデートしようとするとエラーを吐いたからです。
それがもうトラウマになってしまって一生懸命復旧して4.5.6に戻してこれまで運用していました。しかしながら今年ももう残り1ヶ月になったところで、これはさすがにまずいんじゃないかと思うようになりました。
そこで、2017年11月1日午前3時頃になんとしてでもWordPress 4.8.2にアップデートすることを決意しました。
自動でアップデートするとやっぱり躓いてかなりのエラーを吐きました。ここでは書きませんがFatal errorとかがいっぱい出ました。そして午前4時20分頃、やっとWordPress 4.8.2にアップデートすることに成功したのです。
長々と書きましたが、結局のところ対処法は「手動アップデートする」ということでした。
手動アップデートの方法
- WordPress公式サイトから最新バージョンのzipを持ってきて解答しておく
- wp-includesフォルダ、wp-adminフォルダを削除する
- wp-config.php以外のファイルを削除する
- 最新バージョンのwp-includesフォルダ、wp-adminフォルダを転送する
- ③で消したwp-config.php以外のファイルを転送する
- 終わり
自動アップデートで失敗した場合でも、古いバージョンに戻さないでこの手順で新しいバージョンのフォルダやファイルを転送すれば復活するはずです。
作業前・作業中に思ったこと
- WordPress 4.7では$wp_filter周りをいじっているプラグインのせいで500エラーを吐くようになるという話があった
- インストールしているプラグインのphpファイルを見ても$wp_filterを使っているものはなかった
- しかし、WordPress本体側のwp-includesフォルダ内のplugin.php, taxonomy.phpでが$wp_filterが使われていた
- プラグインの問題でWordPressのバージョンアップデートに失敗したわけではない
- テーマのphpの問題でWordPressのバージョンアップデートに失敗したわけではない
- ということは、WordPress本体側のphpの問題であってテーマやプラグインは関係ない
- エラーを吐いたphpファイルを新しいバージョンのものと置き換えればいいのではないか?と思い自動アップデートをした
- 案の定失敗して大量のエラーを吐いた
- エラーを吐いたphpを新しいバージョンのものに置き換えてみてもエラーを吐き続ける
- やはり手動アップデートをするしかないか、と思い方法を探す
- 方法を見つけたので、wp-includesフォルダとwp-adminフォルダのみを削除
- 新しいバージョンwp-includesフォルダとwp-adminフォルダを転送した
- やはりエラーを吐き続けた
- 試しにwp-config.php以外のファイルを削除
- wp-includesフォルダとwp-adminフォルダを削除した
- 最新バージョンのwp-includesフォルダ、wp-adminフォルダ、削除したwp-config.php以外のファイルを転送してみた
- 復旧した。WordPress 4.8.2に更新完了した
- 長らく更新されていないプラグインは動かない可能性があるので注意すること
- なんといっても本体が正常に動いていることが重要なので、動かないプラグインはおいおい代替品を探していく