はてなブログからワードプレスに移行して2ヶ月半が経過。
ようやくワードプレスにも慣れて、これまで大きな不具合を体験する事も無く移行したメリットを感じていたところですが、先日プラグインを更新後ついに不具合現象に遭遇してしましました。
なんとか自力で復旧する事が出来たので、その方法とそこから学んだことを記事にします。
きっとワードプレスに慣れてる方々にとっては当たり前のことなんだろうし、そもそも安易にプラグインを更新する事が間違っていたんですよね。
今回の事象発生と問題解決出来た事で久々に自分が技術者だった事を思い出せて僕にとっては良い体験でした(笑)
ワードプレスのプラグインを更新したら不具合が発生!!
発生した不具合事象
記事作成後に実際にその記事を確認しようとして、作成した記事のURLをブラウザ上で指定すると404エラーが発生しました。
何でこうなったのか原因は?
普段と違って実施した事を思い出すと、プラグインCustom Permalinksの更新通知が来ていたので更新後、記事作成をしていました。
記事作成時はこのプラグインでURLのドメイン以降の文字列を手動で設定していたので、URLが適切なのに表示されないのは、このプラグインを最新に更新した事が原因だろうと気が付きました。
ワードプレスやプラグインCustom Permalinksの詳細な仕組みは良く解りません。
でも推測すると、記事を更新した際にURLとIDの紐づけが不適切にDB更新されてしまったため、ブラウザからそのURLが呼び出された際にワードプレス内部でURLのターゲットとなる記事レコードが参照出来なくなってしまったんでしょう。
もっと詳細にURL文字列を生成するのDB項目とCustom Permalinksが更新するDB項目などテーブル構造を調べていけば、ちゃんと理解出来るんだろうけど記事量を増やす事に注力したいので、調査はヤメ。
元技術者としては、解明したいんですけどね。
優先順位をつけて深く突っ込むのは別機会にしないと、ブログの更新頻度をアップすることが出来なくなってしまいますから・・・。
解決方法① 必要なファイルを置き換える
過去バージョンのプラグインを入手しようとするが上手くいかない・・・
プラグインのアップデートはzipファイルで行われるので元バージョンのプラグインzipを入手しようと思って、このサイトの情報を手掛かりにしたけれど、古いバージョンのzipはダウンロード出来ませんでした。
https://wordpress.org/plugins/プラグイン名/ というURLの後ろに"download"という文字をつけて、https://wordpress.org/plugins/プラグイン名/download とするば過去バージョンのファイルが入手出来るという事。
問題なく使えそうな情報なんですけどね・・・。何かやり方が違ったのかな。
前バージョンのファイルを全て入れ替える
pluginsフォルダの配下にプラグイン毎のフォルダが存在していた事に気が付いていたので、もしかしたら前バージョンのファイルを新しくアップデートされたファイルと置き換えて元に戻してしまえば、きっとこのプラグインを元バージョンに戻せるかもしれないと考えました。
たまたま実験用に作成していた環境に更新前のCustomPermalinksバージョン0.93が残っていたので、エックスサーバーにTeraTermで接続してwp-content/plugins/CustomPermalinks 配下に存在していた4ファイルを不具合が発生している環境のファイルと置き換えました。
すると、推測通りにプラグイン管理画面で元のバージョンに戻った事が確認出来ました。
記事の新規作成、更新など実テストを実施、不具合が解消出来たことが確認出来ました。
解決方法② バックアップから復元
解決方法①でも全く問題無いかと思いますが、たまたま前々日のフルバックアップを持っていましたので復元の練習も兼ねてリストアを試しました。
これまでバックアップはプラグインUpdraftPlusで取得していたもの、本当にちゃんとリストアが出来るのかテストした事がなかったのでちょうど良い機会です。
UpdraftPlus設定画面から復元画面を開きます。そして4つのチェックを選択して実行するだけ。
結論としては、UpdraftPlusでの復元は誰でも超簡単だと言う事がわかりました。
今回は試していませんが、違うドメインに環境を復元するなど、いろいろ機能があるんですね。
2日前の環境に復元後、差分記事のテキストデータをワードプレスから登録して作業完了。
まとめ
プラグイン更新を安易に行う事は止めましょう!
今回不具合が発生して、結構焦りました・・・。
「ワードプレスの更新やプラグインの更新は、ちゃんとバックアップを取得してから実行しましょう」なんて言われていますが、僕は先人の忠告を無視して何も気にせずに更新通知が来たらサクサクとプラグインを更新しちゃっていたんです。
これまでは、たまたま上手く言っていただけだったんですね。
修復出来る事もよく分かったけれど、毎回復旧するのは時間が勿体ないですね。
誰もが言っているワードプレスとプラグインの更新前は、必ずバックアップを取りましょう!
そもそもすぐに更新するのではなく、しばらく時間を置いてから不具合が発生していない事を確認してから更新したほうが確実ですね。
不具合が発生した環境情報
誰かの役に立つかもしれないので、不具合が発生した環境のバージョンなどを書いておきます。
- レンタルサーバー:エックスサーバ
- PHPバージョン:7.1.4
- ワードプレスバージョン:4.8.1-ja
- ワードプレステーマ:affinger4、バージョン20170731β
- Custom Permalinksバージョン:1.0.1(1.0.0でもNG)
(追記)
早速、1.0.2がリリースされましたが、教訓を活かしてアップデートはしばらく控えます(笑)
リリースノートには、”Fixed Notice and some URL Issues”とあるので、なんとなく修正されていそうですが念のため。
その他分かったこと
今回の事で、UpdraftPlusでバックアップを取っておけば、有事の際に復元は超簡単であることが分かりました。
もしバックアップが存在しない場合、プラグインを構成する元のファイルを持っていればTeraTermなどでサーバー接続して、ファイルを置き換えする事で前バージョンに戻せることが分かりました。
1点宿題
プラグイン更新画面から更新する方がさらに確実で安心なので、前バージョンのzipファイルの入手方法を明確にする事。
ちょっと調べてみますが、どなたかご存じの方いらっしゃれば教えてほしいです!!