最近、テストサーバーでサイトリニューアルして、本サイトに戻す機会がありました。
その時に、All in One WP Migrationを使ってライブサイトにインポートしたらインポートが終わらないので、中断したら500エラーになりました。
最初は、原因がわからなくて、吐きそうになったのですが、どうにかインポートできるようになりました。
その時に行ったことをまとめておきたいと思います。
事例1:PHPエラーが原因でインポートが終わらない
インポートがいつまでたっても進まない、終わらないというときは、別のウィンドウで移転先のサイトを開いてみます。
その時に、すでにPHPエラーが出ている場合はそのまま待っても永遠に終わりません。
また、直前の状態にリカバリしても、何度やっても同じエラーになります。
なぜなら、PHPのエラーが起きる原因は、移転元と移転先のWordpressやプラグインなどのバージョンの組み合わせで起きます。
ですので、相性の悪い組み合わせの場合は何度やっても同じ結果にしかなりません。
一時的な500エラーの解消方法
エラーメッセージが表示されているときは、その原因を一時的に取り除きます。
インポートで500エラーや「サイトに重大なエラーがありました。」になるのは、9割はリニューアル先のプラグインが原因です。稀にテーマやカスタマイズの場合があります。
wp-content/plugin以下でエラーが出ている場合は、pluginディレクトリの名前を変更します。
原因となっているプラグインが分かっているのであれば、そのプラグインのディレクトリを削除します。
テーマでエラーが出ている場合もテーマディレクトリを一時的にどこかに移動するなどして、wordpressからテーマが見えないようにします。
そうすることで、wordpressにログインできるようになると思います。
失敗のたびに毎回Wordpressを再インストールする必要はありません。とりあえずWordpressにログインできる状態まで復旧させて、再度インポートできれば元に戻ります。
事例2:ネット回線が重くてインポートが終わらなかった
VPN接続環境で激重(数十KBpsの上り速度)だった時に外部ファイルを直接インポートした時の話です。
待てど暮らせどインポートが終わりません。仕方ないので、別窓でサイトを表示させてみましたが、サイトは正常に表示されます。
思い切ってインポート中の画面をリロードし中断しました。相変わらずサイトは正常に表示され、インポート自体が行われなかったのかなか?と思いました。
ダッシュボードログイン時に致命的なエラーが発生
しかし、ダッシュボードにログインしようとしたら、Wordrpessが致命的なエラーでログインできません。
エラーの原因はその時はよくわかりませんでした。Wordpressが壊れていないかwp core verify-checksumsでチェックしましたが、正常でした。
最終的におかしかったのは、やはりwp-content/plugins以下だったのですが、見たことない状態になっていました。
wp-content/pluginsフォルダに見たことないフォルダがたくさんありました。フォルダ名がプラグインファイルに書かれているテキストの行の内容になっていました。これは初めて見ました。
おそらく、ネットが重くてインポートファイルが壊れてしまったのだと思います。
ファイルが壊れていた時の対処方法
wp-content/pluginsをリネームすると、Wordpressにログインできるようになりましたので、もう一度、インポートしたら正常に終わりました。
サイト移転時にPHPエラーが出ないようにする方法
All in One WP Migrationでインポートを成功させるために必要な手順について説明します。
移転元と移転先のPHPのバージョンを合わせる
PHP7からPHP5への移転で問題が起きるのはよく知られています。
しかし、今回は移転元がPHP7.4、移転先がPHP7.2でした。
この程度の差は関係ないはずですが、PHP7系でもバージョンによってエラーが出る時があるので、なるべくそろえた方が良いでしょう。
ドメインごとにPHPのバージョンを変更できないサーバーの場合は、最悪PHPのエラーを修正するような対応も必要になります。
移転元と移転先のWordpressのバージョンを合わせる
Gutenburg導入後から、テーマやプラグインが最新バージョンのWordpressじゃないと動かない、エラーを吐くケースが増えています。
SwellやSnow Monkeyなどのブロックエディタへの対応が積極的なテーマはWordpress最新版じゃないと動かないケースが多いです。
単純にサーバー移転するだけなら、移転先はまっさらのWordpressサイトで最新版のWordpressがインストールされているはずなので問題が起きませんが、テストサイトでリニューアルしてリプレースする時には問題が起きやすいです。
All in One WP Migrationで移転する際は、移転先と移転元のWordpressのバージョンはを揃えるのが安全です。
単純にサーバー移転の場合
移転元に移転先のWordpressバージョンを合わせます。
例えば、移転元がWordpress5.2で移転先がWordpress5.8の場合は、移転先のWordpressのバージョンを移転元にそろえて、Wordpress5.2にします。
Wordpresのバージョン変更は、プラグインを使うのが簡単です。
サイトリニューアルの場合
テスト環境(移転元)に移転先のWordpressバージョンを合わせます。
例えば、テスト環境が最新のWordpressバージョンであれば、移転先のWordpressも最新のバージョンにします。
移転元と移転先のプラグインのバージョンを合わせる
プラグインもGutenburg導入後から最新のWordpressじゃないと動かないケースが結構あります。
また、移転先に古いバージョンのプラグインがあるとインポート時に500エラーになるケースがあります。
MW WP Formのバージョン2.xが原因でエラーになった事例があります。
単純にサーバー移転の場合
このケースは、移転先はプラグインが初期状態なので問題が起きることはありません。
サイトリニューアルの場合
移転元(テスト環境)と移転先のプラグインのバージョンを揃える必要があります。
テスト環境が最新のWordpressバージョンでプラグインもさ新バージョンであれば、移転先のプラグインも最新のバージョンにします。
インポートが止まるのは、サイトリニューアルの場合だけ
サイトリニューアル時にだけ移転元と移転先のWordpressやプラグインのバージョンの差異で、All in One WP Migrationのインポートが止まりやすくなります。
All in One WP Migrationで上書きされるから移転先の環境は関係ないと思っていたら、実は関係あります。
一番簡単なのは、移転先をまっさらな環境にしてしまうことですが、それがしにくいサイトというのもあります。
次に確実なのは、次の手順です。
バックアップからの復元はプラグインを全て無効化するのがベスト
All in One WP Migrationでバックアップから復元しようとすると、他のプラグインの影響を受ける時があります。
All in One WP Migrationも全てのプラグインを無効化する処理が入っているようですが、うまくいかない時があります。
全てのプラグインを無効化して、All in One WP Migrationのみ有効化しておくと、復元が途中で止まる可能性を消すことができます。
まとめ
サイトリニューアルでAll in One WP Migrationを使ってインポートが止まったり、500エラーになったりすることが多いので、リニューアル時のAll in One WP Migrationでのインポート手順をまとめておきました。