WordPressテーマの対応兼ね合いなどでWordPress4系列で運用している人も少なくはない(たぶん)気がするけど、拙者も別サイトで4.9.8で運用しているサイトが複数ある。
そんな中、思い当たることはないのに、なぜだか4.9.8を使っている複数の全く別のサイトでプラグインの新規追加の機能に不具合があることにたまたま気付いた。
事象
WordPress 4.9.8で運用しているテーマや導入プラグインなどが全く別の複数サイトでプラグインの「新規追加」をしようとするとPHPにエラーが発生して管理画面が真っ白になる不具合に遭遇。
ファイルで言うと、plugin-install.php の処理でエラーが出るっぽい。
FTP経由でのアップロードやインストールは問題なくできるため、サーバー容量の問題ではなさそう。パーミッションも問題ない。直前に何か改変した覚えもない。
試したこと
関連しそうなプラグインの停止などを試みるも状況は変わらず。
原因の調査 1日目~2日目
WordPress 4.9.8自体がサポート終了しているのと、サーバーで利用しているPHPも7.4と同様にサポート終了しているので、WordPressのプラグイン配布元などのサーバーとのやりとりで不具合が起きるのではないかと思う。いや、勝手にそんな気がするだけで真実かはわからない。
エラーログを調べると
PHP Fatal error: Cannot redeclare plugins_api() 以降省略
というのが出るけど、海外のサイトが少しヒットするくらいで同じ事例はひっかからない。
一つのサイトだけだったら、そのサイト固有の不具合が考えられるけど、全く別の4.9.8の複数サイトで同じ症状となると、自分の力が及ぶ範囲外の原因を考えざるを得ない。
原因の調査 3日目
さっぱり原因がわからず、外部要因ということにしようとして3日目を迎えた。泥沼状態。
そこで、昔働いてたブラック企業のIT担当者が口うるさく言っていたのがPC関係でトラブった時は「原因を切り分ける」のが重要ということ。
WordPressの場合は「Health Check & Troubleshooting」という、何がトラブルの原因になっているか調査するのに便利なプラグインがある。
これを使うとテーマを一時的に無効にしたり、プラグインをまとめて向こうにしたり、原因の特定に役立てることができる。
拙者は泥沼状態で瀕死の状態でローカル環境にテストサイトを作って試したが、本番サイトでやっても本番を外部には出しつつ、管理者だけテスト画面を表示できるらしい。
まぁ、プラグインだから管理画面に入れないレベルだとどうしようもないが、FTP経由だったらプラグインを入れられたので試してみた。
色々やっていると、特定のタイミングで「新規追加」ボタンが使える時がある!
原因はプラグイン「XML Sitemap Generator for Google」だった
丸3日費やして特定した原因はプラグイン「XML Sitemap Generator for Google」だった。またプラグイン、お前かよ。
でも、まさか、である。
もっとシステムをゴリゴリするようなプラグインばっかり疑っていたから、こんな影響しさなそうなプラグインが原因で不具合が出るとは思わなかった。配布画面では対応していることになっていたが、たぶん、4系列との相性が悪いのかなと思う。
とにかくこいつが全ての原因だった。
思ったこと色々
CMSというかWordPressで運用するデメリットであるけど、WordPressやPHPにはバージョンやサポート期間があるから、同じ状態ではせいぜい3年くらい前でしか運用できないと、1~2日目はしみじみ思ったのであった。
3日目になると具体的な改善は全くできていないけど、FTPアップではインストールできるから当面気にしないのが健康によいだろうか・・・などと感じつつも、末端ながらWeb屋のしょうもないプライドで解決したい気持ちもあった。
しかし、意外と大手企業とかの何百ページもあるサイトでも多いけど、結局は静的サイトでPHPとかデータベースか使わずに運用するのが最強かも、と思う今日この頃であった。
とりあえず、プラグインは何の気なしに入れまくったり、更新するのは絶対NGだ。経験上、WordPressのトラブル原因の半分以上はプラグインのせいだ。