少し前の話になりますが、WordPress が6.7に更新されました。
私は WordPress のドット(.)以下が1桁の時(X.M.m の .m が付かないバージョン)を信用していないので、6.7.1 になったあとで更新することにしました。
複数のWordPress サイトを使っていて、二つのサイトは特に問題は出なかったものの、一つのサイトが壊れてしまった!(涙)
そのサイトとは、私が Diabloゲームをプレイした時に情報をメモしておくためのサイト、diablo.lifewithunix.jp。
まず、いつものように、WordPress 管理画面→更新から WordPress の更新を行ったところ、更新失敗。
そして、管理画面に戻ろうとすると、
と出てきて、二度と管理画面にアクセスできなくなってしまいました。これには困った。
WordPress 管理画面にログインできないため、Webブラウザーからプラグインを外すような作業が出来ない。
レンタルサーバーだと、ftp でファイルシステムをいじることになるでしょう。私の場合は自前サーバーなので、シェルによるメンテナンスが可能なものの、今回の場合何をすればいい?
シェルからプラグインフォルダーのプラグイン名を変更して(example_plugin.disable という感じ)みたものの、状況は良くならず。
やむを得ず、wordpress.org から最新 WordPressパッケージをダウンロードし、展開後、wordpress フォルダー上から上書きしました。要するに初期化。レンタルサーバーの ftp の場合、パソコンローカルに展開した後、上書き ftp アップロードする感じ。
更新に問題なかった他の WordPress サイトとどう違うかというと、ユーザー用パーティションじゃなく、システムパーティションにインストールしてあること。
OSとサーバーアプリのセキュリティーがどんどん強化されてゆき、時間経過とともにWordPress を利用できるシステムパーティションのオーナー、グループ、パーミッションがどんどん狭められてゆき、WordPress 運用が長いディレクトリは、WordPress や Apacheの大型アップデートがあるたびにトラブルが発生。
恐らくパーミッションの問題だろうと、最上部から、httpd のユーザーとグループを下位ディレクトリ全体に展開。
これを行えば、WordPressはどういう状態でも復旧は出来る。ただし、プラグインやテーマは disable されたり、初期状態に戻ったりします。プラグインの設定が mysql データベースの中にある場合は残り、外にある所は初期状態に戻る 感じ。
この後、手作業でオフになったプラグインをオンに戻してゆくのですが、amazon-auto-links という Amazon.co.jp 商品へのリンクを自動的に管理してくれるアプリをオンにしたところで、GUI上にエラー発生。
以下は、WordPress のデバッグ機能をOnにして、ログに残っているエラーを転記したもの。
「PHP Notice: Function _load_textdomain_just_in_time was called . Translation loading for the amazon-auto-links domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. 」
Amazon-auto-links に原因があるのか、WordPressの新しいAPI(?)に問題があるのかはわかりませんが、このプラグインをオンにすると画面上部に複数のphpエラーが表示されてしまう。
デバッグログには、
[28-Nov-2024 15:02:55 UTC] PHP Warning: Undefined array key "host" in ...../wp-includes/canonical.php on line 728 [28-Nov-2024 15:02:55 UTC] PHP Warning: Undefined array key "host" in ...../wp-includes/canonical.php on line 731 [28-Nov-2024 15:02:55 UTC] PHP Warning: Undefined array key "scheme" in ...../wp-includes/canonical.php on line 752 [28-Nov-2024 15:02:57 UTC] PHP Warning: Undefined array key "host" in .....//wp-includes/canonical.php on line 717 [28-Nov-2024 15:02:57 UTC] PHP Deprecated: strtolower(): Passing null to parameter #1 ($string) of type string is deprecated in ...../wp-includes/canonical.php on line 717
と記録されます。
面倒なので、現在、Amazon-auto-links プラグイン をオフにして運用しています。
MySQL内のコンテンツは失われていないはずだから、一度Diabloサイトの全コンテンツをエクスポートした後、プラグインを消去し、再インストール。全投稿を消去して、問題解決を確認後、エクスポートしたコンテンツをインポートし直せば復旧できそうですが、時間が掛かりそうなのでまだやっていません。
エラーを検索してみると、他のWordPress ユーザーも 6.7 で同様の問題に遭遇しているようです。
状況をあまり細かく記録しておらず、時間が経過してからのメモになるので、うろ覚えのところもあります。
さて、このあとどうしよう。。。