WordPress のバージョンアップでちょっとつまずいた話
このブログは エックスサーバー にホスティングしている WordPress で運用しています。
今回、その WordPress のメジャーバージョンアップを行いました。
すんなりと完了すればブログに投稿するつもりはなかったのですが、少しだけつまずいた工程があり、その経緯がどこかで誰かの役に立つかもしれないと思ったので、ここに簡単に記しておきます。
バージョンアップ前
- WordPress ver.5.9.5(最新は ver.6.1.1)
ブログを10年以上運用してきて、バージョンアップはその都度、こまめに行ってきました。
しかしバージョン 6.0 のリリースが去年の5月のことですから、今回は半年以上スルーしていたことになります。
なぜバージョンアップを躊躇していたのかというと、推奨環境の要件に変更があったためです。
このブログの構築環境では、合わせて PHP と MySQL のバージョンアップも必要のようでした。
特に PHP のバージョンアップには注意が必要です。プラグインが PHP の上位バージョンに対応できていない場合、最悪ブログが表示できなくなる可能性があります。
過去に軽い気持ちでバージョンアップして、ホワイトスクリーンをくらい、あわてて戻したことがあります。原因はメンテナンスが停止したプラグインでした。
それでも、WordPress のバージョンアップ未完了のリスクは周知の事実であり、逆にプラグインが新しい WordPress を必要とすることも発生してきたので、ここにきてやっと重い腰を上げることにしたわけです。
バージョンアップ手順
必要な手順は以下です。
- MySQL バージョンアップ(新規 DB 作成、データ移行、設定ファイル変更)
- ブログデータのバックアップ
- プラグイン停止
- PHP バージョンアップ
- WordPress バージョンアップ
- 停止していたプラグインを有効化
- 動作確認
さて、最初の MySQL のバージョンアップで、早々に問題が発生しました。
wp-config.php が存在しない !?
エックスサーバー には「MySQL 移行ツール」というありがたいツールがあります。
『MySQL移行ツール』は、旧バージョンのMySQLデータベースについて、最新バージョンのMySQLへの移行を補助するツールです。
本ツールでは、旧バージョンのMySQLと同じ内容のデータベースとMySQLユーザを、最新バージョンに作成します。
ご利用のプログラムにて設定のMySQLホスト名を移行先MySQLのホスト名に変更するのみで、最新バージョンのMySQLデータベースを利用することが可能になります。引用元:エックスサーバー マニュアル > データベースについて > MySQL 移行ツール
マニュアルを読み進めていくと、最後に行う MySQL ホスト名の変更は、サーバー上の wp-config.php を書き換えることで実現できるようです。
そこで エックスサーバー が提供している Web のファイルマネージャーで該当ファイルを探しますが、どうしても見つかりません。
WordPress デフォルトのディレクトリ構造を少し変えています。サブフォルダを含めて何度も確認したのですが、見当たりません。
WordPress のダッシュボードからはデータベースホスト名が確認できるので、もちろんないはずはないのですが…
ファイルが見つからなければ DB 移行は完了できません。どうしても解決できないので エックスサーバー のサポートにメールで問合せしました。
存在するが見えない ?
サポートからの返信メールはその日のうちに届きました。あるフォルダの中に該当ファイルは存在するとのことです。
とりあえずひと安心です。
しかしファイルマネージャーでは相変わらず見えないのでアクセスできません。
そこで手を替えて、FileZilla をダウンロード・インストールしてみました。
(普段はサーバー上のファイルに直接アクセスする必要はなく、また使用しているクライアント PC も買い換えているので、現在使用中の PC にはまだ FTP 接続環境がありませんでした)
そして FileZilla でアクセスしてみると、確かに wp-config.php が存在しました。該当ディレクトリ内にはファイルが一つも見えなかったのですが、他にも複数のファイルがあるのがわかります。
そこで、ファイルマネージャーからこのディレクトリ内のファイルが見えない理由を、再度サポートに問い合わせてみました。
ファイル名の文字化けが原因(たぶん)
サポートからの返信は、またすぐにありました。
それによると、ファイル名が文字化けしているものがあり、それが影響しているのではないか、とのことです。
funcion.php??????????????.txt
これは何かのショートコードを追記したときに、バックアップとしてアップロードしたものだというかすかな記憶があります。文字化けしているのはたぶん日本語ですね。
ファイルをバックアップしてから削除してみてください、との提案があったので試してみます。
サーバー上のファイル名文字化けが原因でファイル操作ができなくなるというのは、ままあることのようで、ネットで検索してみるとけっこうヒットします。
解決方法は FTP ソフトの文字コード設定を変更してみる、です。
しかしいろいろ設定を変更してみますが、削除できません。すべてレスポンス 550 、No such file or directory が返されます。
ペンディング
とりあえず、今回のバージョンアップ作業、およびブログの運用には差し障りがないようなので、それ以上追求することはあきらめました。
MySQL 移行ツールを使用してから、FileZilla でダウンロードした wp-config.php を変更してアップロードします。そしてWordPress のダッシュボードを開き、データベースホスト名の変更を確認しました。
2023年3月17日追記
問題の文字化けしていたファイルですが。無事に削除できました。やったことは、SSH接続してコマンドラインで削除、です。
- サーバーパネルで SSH接続を有効化
- 公開鍵認証用鍵ペアの生成、およびダウンロードされた秘密鍵を保存
- 秘密鍵のパーミッションを600に変更「 chmod 600 [秘密鍵のパス] 」
- iTerm で SSH 接続(私はmacbookで作業しました)
- コマンドは「 ssh -i [鍵のパス] -p 10022 [ユーザー名]@[初期ドメイン名].xsrv.jp 」鍵のパスを明示しないと接続できませんでした。
- 該当フォルダに移動、ls がそのままでは使えなかったので「 /bin/ls 」
- rm コマンド、ワイルドカード指定で削除を試みる。「 rm function.php* 」しかし、そのようなファイルやディレクトリはありません、で失敗
- ファイル名をコピペしてトライ「 rm funcion.php??????????????.txt 」削除できた!
- そして Webファイルマネージャーでも問題なく表示ができるようになりました。
一連の作業は、すべてChatGPT 4 に逐一教わりながらやりました。ホントに凄い!
なお、ssh 接続での作業はリスクをともないますので、十分注意してください。
以降の作業
- バックアップ
- プラグインの UpdraftPllus を使用
- すべてのプラグインの停止
- 作業開始前にメンテナンスモードに移行
- PHP バージョンアップ
- サーバーパネルにて実行
- WordPress バージョンアップ
- ダッシュボードにて実行
- 停止していたプラグインを有効化
- メンテナンスモードも解除
- 動作確認
- プラグインの問題も発生せずに完了、閲覧・投稿ともにOK
プラグインの停止からのバージョンアップ作業はアクセスの少ない朝方に行いましたが、30分もかかりませんでした。
まとめ
- サーバーにアップロードするファイル名に日本語は使わない
- ファイル名が文字化けしていると、エックスサーバー の Web ファイルマネージャーで、ディレクトリの内容自体が表示されない可能性がある
- 大きなバージョンアップでは、バックアップを取り、問題発生時の切り戻し手順をあらかじめ調べておく
- 作業内容は以後のバージョンアップでも有用だと思われるので、記録として残しておく
- エックスサーバー のユーザーサポートはレスポンス、対応内容ともに満足のいくものだった
以上です。
ディスカッション
コメント一覧
まだ、コメントがありません