WordPressのバージョンをアップデートした後、管理画面に入ろうとすると/wp/wp-admin/upgrade.php?_wp_http_referer=%2Fwp%2Fwp-admin%2F
へとリダイレクトされ続け、「更新の必要はありません WordPress のデータベースはすでに最新です !」と表示されて、入れなくなってしまいました。解決方法について記載します。
発生原因
この画面にリダイレクトされる原因は、Wordpressのバージョンアップ後、Wordpressのバージョン情報がウェブサーバー側とデータベース側とで一致しないことで起きるようです。
Ref: https://github.com/WordPress/WordPress/blob/master/wp-admin/admin.php#L51-L55
対処方法
ということで、Wordpressのバージョンをデータベース側のバージョンと比較してみました。
WordPressのバージョンはwp-includes/version.php
のwp_db_version
にセットされています。
$ heroku run bash -a jikoblog
Running bash on ⬢ jikoblog... up, run.4394 (Free)
~ $ pwd
/app
~ $ grep "wp_db_version =" web/wp/wp-includes/version.php
$wp_db_version = 51917;
データベース側では、wp_options
テーブルのdb_version
というカラムにセットされています。
ここで両者のバージョンがなぜか一致してない場合は、Wordpressのバージョン($wp_db_version
)をデータベースに格納されているバージョン(wp_options
のdb_version
)と合わせてあげることで、とりあえず例の画面は突破し管理画面に入れるようになると思います。
ちなみに、私の場合は↑の通りバージョンが両方とも51917で一致してました。にも関わらず、本現象が起きており数時間ほど迷ってしまったのですが、結果的に犯人はRedisサーバーでした。アップデート作業時にRedisの情報が更新されてなかったようで、、、heroku redis:cli
でHerokuのRedisに接続し、flushall
コマンドでRedisのデータをクリーンアップしたら、その後はMySQLデータベースの最新の情報が取得され、現象が解消し管理者ページには入れるようになりました。
$ heroku redis:cli
Connecting to redis-asymmetrical-69722 (HEROKU_REDIS_MAUVE_TLS_URL, HEROKU_REDIS_MAUVE_URL, REDIS_TLS_URL, REDIS_URL):
ec2-44-196-208-213.compute-1.amazonaws.com:22940> flushall
OK
ほかにもパフォーマンス向上のためのキャッシュ関連のプラグインを利用していると、私のようにデータベースは更新されているのに、キャッシュの情報が参照されていることで同様の現象になることが起こりうると思います。ご注意を!