6年前に制作したWordPressサイトをPHP8・MySQL8へ対応させた際に起きたトラブルと対処法
WordPressは長期間運営されることが多く、サーバー環境の変化に伴ってトラブルが発生するケースも珍しくありません。先日、6年ほど前に制作したWordPressサイトのクライアントから「プラグインをアップデートしたらサイト見れなくなった」との連絡を受け、メンテナンス対応を行いました。原因はプラグイン「Smart Custom fields」によるもの。Smart Custom fieldsについては数日後のアップデートによって修正がされましたが、メンテナンスを行った際、PHPやデータベースのバージョンがWordPressの推奨基準にあっていないためアップデートを行いました。この記事では、実際に起きた問題とその対処方法を紹介します。
Smart Custom fieldsのトラブル
この件は、現在は解消されています。5.0.2にアップデートした際、サイトが見れなくなりました。
WordPressにログインできなくなったため、WordPressのFAQ トラブルシューティングを参考に、まずは「ログインできる状態にする」から「バックアップから復旧する」というやり方で数日前に戻りました。サーバーなどでバックアップしているサイトは巻き戻しが出来れば、その方が簡単かもしれません。
また、Smart Custom Fieldsは開発が終了しており、新規の導入が推奨されていません。別のプラグインへの乗り換えを検討も進めなければなりませんが、当該サイトは結構な部分で使っていたので、コスト的に大幅に費用が増額になりそうだったため、代替案は考えつつ、完全にクローズドになるまで使用していくという方向になりました。
ためちゃくちゃ便利なプラグインのため、いまだに多くのサイトに使われていることと思います。コストと安全性の両天秤で考えなければならない課題かと思います。
PHP7.xから8.xへの移行
WordPressの推奨環境に従い、サーバーのPHPを 7.x → 8.x へ変更しました。しかしその結果、サイトで利用していた一部のプラグインが動作しなくなりました。表示等は問題なかったのですが、Formで申し込みが出来ない事態になりました。
予約プラグイン「MTS Simple Booking-C」のエラー
予約機能を担っていた「MTS Simple Booking-C」プラグインです。
エラーの原因
- 無償版プラグインは PHP8以降に非対応
- php8系で削除された関数 を使用していたため、致命的なエラーが発生
本来であれば有償版や代替プラグインへの移行が望ましいのですが、急ぎで予約機能を復旧する必要がありました。
応急処置としてコード修正
クライアントの業務上、予約機能は必須であり、一時的に停止させるわけにはいきませんでした。一時的な対応として、該当コードを直接修正することで動作を確保しました。
参考にした記事はこちら:【note】MTS Simple Booking-C プラグインをPHP8対応にする方法
これにより一時的には動作が復旧しましたが、本来であれば 代替プラグインの導入 や 有償版への移行 が望ましい状態です。
データベース(MySQL5.6 → 8.0)アップデートの壁
PHPに加えて、データベースも古いバージョンのままではセキュリティリスクがあるため、MySQLを 5.6から8.0 へアップデートしました。
これにより、セキュリティ強化やパフォーマンス改善といったメリットが得られますが、互換性の問題でSQLクエリの調整やプラグイン側の対応が必要になる場合もあります。
ロリポップでの注意点
今回のサーバーは ロリポップ!レンタルサーバー でした。
多くのレンタルサーバーでは管理画面からワンクリックでデータベースをバージョンアップできますが、ロリポップの場合は 自動アップデート機能が用意されていません。
そのため、手動で新しいデータベースを作成し、既存のデータをエクスポート・インポートする手順を踏む必要があります。
参考にした記事
実際の流れ
- 新しいDB(MySQL8.0)を作成
- 既存DB(MySQL5.6)からデータをエクスポート
- 新しいDBにインポート
- wp-config.php の接続情報を更新
- 動作確認を行い、不具合がないかをチェック
移行時に注意すべき点
- エクスポート/インポートの際に文字コード(UTF8MB4など)を統一する
- 大きなテーブルは分割エクスポートすることでエラー回避が可能
- プラグインによってはSQL構文の互換性問題が発生するため、ログを確認しながら調整が必要
メンテナンスの重要性を再確認
今回の対応を通じて、いくつかの重要な教訓を再確認しました。
1.開発が止まっているプラグインの放置は危険
止まっている長年更新されていないプラグインは、PHPやDBのバージョンアップで動作しなくなるリスクが非常に高いです。できるだけメンテナンスが続いているプラグイン使用続けることが重要です。
SCFも導入当時は使っているサイトも多く、開発も続いていました。しかし数年たつと開発をやめたり、セキュリティサポートだけになったりする場合があります。
そのために運営には相談できる専門家などが必要と感じています。
2.サーバーの仕様を理解しておく
今回のように「ロリポップではDBを手動移行する必要がある」など、レンタルサーバーごとの制約を理解していないと作業が複雑化します。基本的にはスペックと料金でご紹介するのですが、今回はクライアントが既に使っているサーバーがロリポップだったため、想定していなかったことが起こった感じでした。さくらサーバーやXサーバーが簡単だっただけに、ロリポップが面倒に感じました。
3.本番前にテスト環境で検証
いきなり本番環境でPHPやDBを切り替えると、致命的な障害が発生したときに即座に復旧できません。
「local」などのテスト環境で事前に確認しておくことが何より大切です。
特にクライアントの目的が「WEBページを通じて問い合わせを増やしたい」などの場合、フォームが動かないなどあってはならないことです。十分にテストが必要です。
まとめ
6年前に制作したWordPressサイトのメンテナンスを通じて、以下のことが分かりました。
- プラグインのアップデートで致命的エラーが発生することもある
- 「MTS Simple Booking-C」は無償版がPHP8非対応だったため、応急処置としてコードを修正
- MySQL5.6から8.0への移行は、ロリポップサーバーでは手動で実施する必要があり、手間がかかる
- 定期的なアップデートとテスト環境での検証が必須
WordPressはオープンソースゆえに自由度が高い反面、長期運用では環境の変化に対応するメンテナンスが欠かせません。
今回の事例が、同じように古い環境からの移行を検討している方の参考になれば幸いです。
カテゴリー : oolog WEBについて ホームページのメンテナンス