かなり古いバージョンのWordPressとPHPを最新版に更新したので、その方法をご紹介します。
今回は仕事の依頼で、6年以上未更新のWordPress4.4.1サイトを更新することになりましたが、WordPressだけでなくサーバー側のPHPもバージョンアップが必要になりました。
単にWordPressの更新だけなら簡単でしたが、PHPのバージョン更新や、MySQLデータベースの再作成といったサーバー側の作業もあったので結構大変でした。
途中でヒヤッとした場面もありましたが、無事に更新できてよかったです。
WordPressを古いバージョンのままで放置すると、サイトが表示されなかったり、不正ログインや改ざんなどのセキュリティ被害が発生します。
WordPressは常に最新バージョンに更新して使ってください。
あと、今回のサーバーはWADAXでしたが、PHPのバージョン変更やMySQLデータベースを作成する場合は、利用中のサーバーごとに手順が違うのでよく確認してください。
※ WordPressを更新する前に、必ずバックアップしてください。また、更新に失敗した場合、サイトが表示されない等のリスクがあるので、自力でトラブルを解決できる方のみ行ってください。
WordPressとPHP 更新の手順
今回行ったWordPressとPHPの更新手順は以下の通りです。
- MySQLデータベースを更新 MySQL5.1 → MySQL5.7
- PHPを最新版に更新 PHP 5.3.3 → PHP 7.4
- wp-config.phpを修正
- WordPressを最新バージョンに更新 WordPress4.4.1 → WordPress6.0.1
MySQLのバージョンが古いと、PHPのバージョンアップができないので、まずデータベースを再作成しました。続いて最新版のWordPressに合わせて、PHPを7.4に更新しています。
あとはWordPress4.4.1を最新版の6.0.1に更新して、プラグインやテーマを更新しました。
旧バージョンのWordPress更新時にエラーが発生した場合は、サーバーのPHPやMySQLデータベースもバージョンアップする必要があります。
このサイトのサーバーはWADAXでした。スペックが古いので新しいプランに切り替えています。
WordPressが更新できない
まずはサイトにログインしてみます。ダッシュボードのWordPressバージョンを見ると、WordPress 4.4.1が稼働していました。
リリースのアーカイブで日付を確認すると、WordPress4.4.1は2016年1月12日となっており、6年半ほど更新されていないようです。
「WordPress 6.0.1 が利用可能です。 今すぐ更新してください。」と表示されているので、バックアップを取って更新しましたが、PHPのバージョンが古いので更新に失敗します。
今のサーバーではPHP 5.3.3が稼働しているのですが、最新のWordPress6.0とバージョンが合わないので更新ができず、下記のメッセージが表示されます。
WordPress 6.0.1 は PHP 5.6.20 以降を必要とするため、更新を実行できません。現在稼働しているバージョンは 5.3.3 です。
「WordPress 5.1.13–en_US に自動更新するか、手動でパッケージをダウンロードしてインストールできます。」と表示されていますが、最新バージョンにしないと意味はありません。
WordPressを更新する前に、まずサーバーのPHPをバージョンアップする必要があります。
PHP更新でデータベース接続確立エラーが発生
では、サーバーのPHPを最新の7.4にバージョンアップしてみます。
WADAXでは「マルチドメイン設定」からPHPのバージョンを変更することができます。現在のPHP5.3から、最新のPHP7.4にバージョンアップしました。
PHPを更新してサイトを表示させると「データベース接続確立エラー」が出ました。このエラー見ると冷や汗が出る・・・(^^;
いろいろ調べてみたところ、このエラーはPHP更新時にデータベース(MySQL)のバージョンが古いと発生するようです。現在のバージョンはMySQL5.1でした。
WADAXの場合、MySQLデータベースのバージョンを途中で変更することはできないので、新しいMySQLデータベースを作成してから、PHPをバージョンアップする必要があります。
MySQLデータベースのバージョン変更
最新のPHP7.4にバージョンアップするため、古いMySQLデータベースを一度エクスポートして、新しいバージョン(MySQL5.7)で作成したデータベースにインポートしました。
なお、MySQLのバージョン変更方法はサーバー会社ごとに異なり、この作業はサーバーがWADAXの場合に必要となります。ロリポップ等も新規データベースを作成してバージョンを変更します。
また、使用中でもMySQLバージョンを変更できたり(カゴヤ等)、MySQLの移行ツールを提供しているサーバー(Xserverやさくらインターネット等)もあるので、よく確認してください。
MySQLデータベースのエクスポート
まずは古いデータベースをエクスポートします。「データベース」→「MySQL設定」に進み、管理ツールの「phpMyAdmin」にログインします。
データベースを選択して上のタブ「エクスポート」に進み、サーバからデータベースをエクスポートします。
- エクスポート方法: 簡易 – 最小限のオプションだけ表示
- フォーマット: SQL
- エンコーディングへの変換: なし
あとは「実行」すると、データベースのエクスポートファイル「●●●●●.sql」が作成されます。
MySQLデータベースを作成
続いて新しいMySQLデータベースを作成します。
コントロールパネルの「MySQL設定」から「新規作成」に進み、MySQLデータベースのバージョンはMySQL5.7を選択、パスワード入力欄にパスワードを入力して、入力確認が良好なら「作成」ボタンをクリックしてください。
この時点で最新版のMySQL8.0を選ぶこともできましたが、とりあえず動作することを優先して、既存のMySQL5.7を選択しました。
MySQLデータベースのインポート
最後にエクスポートしたデータベースを、新しいMySQLデータベースにインポートします。
新しく作成したデータベースから、管理ツール「phpMyAdmin」にログインします。
まずはインポート先のデータベースを選択して、上のタブ「インポート」に進み、データベースをインポートします。
アップロードファイルの「参照」から、先ほどエクスポートしたデータベースファイル「●●●●●.sql」を選択します。
その他の項目はそのままで、あとは「実行」すればOKです。これでMySQLデータベースのバージョン変更が完了しました。
wp-config.phpを編集する
WordPressはデータベースの接続情報を「wp-config.php」で管理しています。
今回は新しいMySQLデータベースを作成したので、wp-config.phpに記載されているデータベースのユーザー名やパスワードを変更する必要があります。
wp-config.phpはサーバーにアップされている重要ファイルなので、WordPressの管理画面から編集はできません。
通常はFTP接続用のFTPクライアントソフト(FFFTPなど)を使って、wp-config.phpを編集しますが、ファイルマネージャで編集できるサーバーもあります。
WADAXは「あんしんWPサーバー」のみファイルマネージャーを利用できます。新サーバーは一般の共用サーバーなので、ファイルの編集はFTP接続が必要です。
wp-config.phpはWordPressのルートディレクトリにあります。一般的なサーバーであれば「ドメイン名」→「public_html」内にあるはずです。
wp-config.phpで編集するのは以下の4項目で、「’●●●●●●●●●●●●●●●’」の部分を新たに作成したデータベースの情報に変更します。
- WordPressのデータベース名
- MySQLデータベースのユーザー名
- MySQLデータベースのパスワード
- MySQLのホスト名
define(‘DB_NAME’, ‘●●●●●●●●●●●●●●●’);
/** MySQL データベースのユーザー名 */
define(‘DB_USER’, ‘●●●●●●●●●●●●●●●’);
/** MySQL データベースのパスワード */
define(‘DB_PASSWORD’, ‘●●●●●●●●●●●●●●●’);
/** MySQL のホスト名 */
define(‘DB_HOST’, ‘●●●●●●●●’);
WADAXではMySQLのバージョンごとにホスト名とポート番号を指定する必要があるので注意してください。MySQL5.7の場合は「127.0.0.1:3317」となります。
PHP7.4にバージョンアップするとエラーが出る
では、サーバーのPHPを5.3.3から最新の7.4にバージョンアップしてみます。
サイトを表示させると「データベース接続確立エラー」は出なくなりましたが、今度はサイトのヘッダー部分に以下のエラーが表示されました。
このエラーはコードがPHP7.0以降に対応していない場合に発生します。
エラー文をDeepLで翻訳すると「description_walker の宣言は Walker_Nav_Menu と互換性がある必要があります。」と出ました。
エラー文の最後を見ると「functions.php on line 47」となっているので、functions.phpを修正する必要があります。
該当の47行目にエラーの原因となるコード文 function start_el(&$output, $item, $depth, $args) があります。
/* custom walker for the navigation /*-------------------------------------------*/ class description_walker extends Walker_Nav_Menu { function start_el(&$output, $item, $depth, $args) { global $wp_query;
以下の通り function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) に修正します。
/* custom walker for the navigation /*-------------------------------------------*/ class description_walker extends Walker_Nav_Menu { function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) { global $wp_query;
これでサイト上部のエラー表示が消えました。
WordPress 最新バージョンに更新
これでようやく最新版のWordPressに更新する準備が整いました。
あとはいつもの手順で、最新バージョンのWordPressに更新します。
続いてデータベースを最新バージョンに更新します。
最新バージョンのWordPress6.0.1に更新完了です。
今回はサーバーのプランも変更したので、ネームサーバー切り替え前に新サーバー上のサイト動作確認を行いました。
参考記事 hostsファイルを編集してサーバー移行時の動作確認を行う
WordPress更新でセキュリティ対策
以上、WordPressとPHPを最新バージョンに更新するまでの流れをご紹介しました。更新作業を忘れないように、備忘録としてこの記事を作成しておきます。
WordPressは、新機能の追加や細かい不具合を修正するため、常にバージョンアップしています。
また、WordPressはCMSの世界シェア1位で利用者が多く、脆弱性を突いた攻撃を受けやすいので、セキュリティ対策として常に最新版のWordPressに更新する必要があります。
WordPressを更新せず、古いバージョンのままで放置すると、サイト全体に不具合が生じたり、攻撃を受けて不正ログインや改ざんなどの被害が発生します。
WordPressは常に最新バージョンを使うようにしてください。