ワードプレスで構築された既存のサイトの改修作業を行う場合、テスト環境にサイトの複製をしてから作業します。
いきなり本番環境に修正を入れ動かなくなるなど、長期間にわたりサイトが閲覧できなくなるといったリスクを回避するためです。
ところがテスト環境に複製したところ、テスト環境のみ「404エラー」となりサイトがほとんど動かない状態になりました。
実機では動作しているのに、テスト環境ではなぜ動かないのか?
結果的には解決できましたが、原因が予想の斜め上でした。
忘備録として記録いたします。
xamppにワードプレスサイトを複製して動かしたら404エラー
xamppに改修作業を行うサイトをコピーし、データベースを複製して動かしてみたところ、すべてのページが404エラーとなりました。
トップページも、下層ページもすべて404エラーでした。
最初はxamppの.htaccessが無効設定になっていると思いましたが、.htaccessは有効になっていました。
ググって調べても解決せず
いつものごとくググりましたが、何か釈然としない点がありました。
それは、現象が微妙に異なっていたからです。
ググって調べると、404は以下のような現象がほとんどでした。
- 下層ページのみ404(トップページは表示できる)
- トップページのみ404(下層ページは表示できる)
404エラーになるのは一部のページで、正しく表示されるページもある現象ばかりでした。
今回は、トップページも下層ページも404エラーになります。
404エラーになる要因をプログラムから追いかけました
ワードプレスでの404エラーは、ワードプレスが判断して出力します。
ワードプレスは仮想フォルダ(存在しないフォルダを実際のフォルダのように表示する)で表示するためです。
そこで、404になるプロセスをプログラムをたどって追いかけました。
すると、実際に存在しているページが存在していない判断になっていました。
例えば、トップページであればトップページなのにスルーされているような現象になりました。
そこで、すべてのページをトップページとなるように仕掛けしてみたところ、それでも404エラーとなりました。
ここで気が付きました。
もしかしてPHPのバージョンがあっていないのではないか?
気づきは正解でした。
xamppのPHPバージョンを変えたら問題なく動作しました
今回PHP8.1で環境の複製を行いましたが、これをPHP7.3で再度複製しなおしてみました。
すると、何事もなかったかのように404エラーが出なくなりました。
単純にPHP8.1では誤動作する記述が使われていただけでした。
実際サーバーのPHPバージョンもPHP7.3でした。
蓋をあければ簡単なことでした。
環境の複製をする場合はPHPのバージョン確認も大事
ワードプレスだから、最新のPHPでも動くだろうという勘違いが原因でした。
ワードプレスのバージョンアップはあくまでも任意であって、必ず最新版になっているとは限りません。
ましてや、業者が勝手にワードプレスのバージョンを上げるわけにもいきません。
なぜならば、ワードプレスに改造が入っていたばあい、ワードプレスのバージョンアップで動かなくなることもあるからです。
自分で改造した場合は対応できますが、他者が改造していた場合は致命傷になりかねません。
バージョンアップするにしても、テスト環境で試す必要があるのです。
もとから、実機のPHPバージョンを確認し、同じPHPバージョンでテスト環境を複製していれば問題のないことでした。
今回もひとつ良い経験をいたしました。
ちなみにxamppでPHPのバージョンを変える方法
今回xamppを使用してテスト環境を起こしていましたが、xamppは1種類のPHPバージョンしか扱えません。xamppでPHPのバージョンを変えるのは、少々手間がかかります。
そこで私は、PHPのバージョンの異なるxamppを複数インストールして、簡単にPHPバージョンを切り替えられるようにしております。
またご参考になれば幸いです。