アフィリエイト広告を利用しています

WordPress 7.1.3 の自動更新のあと全ページが503に【エックスサーバー】プラグインでもテーマでもなく、PHP 8.2 から 8.3 系への切り替えで復帰

WordPress 7.1.3 自動更新のあと、PHP 8.2 で503、PHP 8.3系で200に復帰

お手伝いしているWordPressのサイトが、朝、全ページ 503 になっていました。

きっかけは、深夜に自動で入った WordPress 7.1.3。

サーバーのPHPは 8.2。

PHPを 8.2 から 8.3 系 に切り替えたら、復帰しました。

プラグインを全部止めても、テーマを外しても、直らなかったんです。

同じ症状の方の参考になればと思い、切り分けの流れを残しておきます。

「アクセスが大量に発生」と書いてある503

ブラウザで開くと、エックスサーバーの青い503のページ。

「アクセスが大量に発生しているための一時的なエラーです」と書いてあります。

全部のURLが503の表示。

調べものは、Claude Code と一緒に進めました。

Claude Code の最初の見立ては、「WordPressに届く前に、サーバーがアクセス集中で止めている」というもの。

僕は、WordPressが原因だと思いました。

結果は、僕が当たりでした。 AIより長年の経験と勘が活きました。

robots.txt も、存在しないURLも、実はWordPressが処理しています。

なので、WordPressが落ちると、まとめて503に見えるんですよね。

画面の文言だけで、アクセス集中と決めつけないほうがいいです。

静的なファイルは表示できた

切り分けの最初の一手は、WordPressを通らないファイルを開いてみること。

wp-includes の中の CSS や JS、readme.html、license.txt は、ちゃんと表示されました。

wp-content/index.php のような、WordPressを読み込まない小さなPHPも、動いていました。

落ちるのは、WordPressを読み込んだときだけ。

サーバーが止まっているわけではない、ということです。

エラーログを見ると、深夜2時22分から全部落ちていた

エックスサーバーのサーバーパネルで「エラーログ」を開きました。

前日までは、PHPの「Deprecated」(非推奨の書き方を知らせる警告で、表示には影響しないもの)が並んでいるだけ。

それが、午前2時22分27秒 から、閲覧が全部このエラーに変わっていました。

AH01067: Failed to read FastCGI header
(104)Connection reset by peer: AH01075: Error dispatching request

PHPが、エラーメッセージを書く間もなく、途中で落ちている状態です。

そのため、ログにはプラグイン名も、ファイル名も出てきません。

WordPress本体が自動更新されていた

ファイルマネージャで、ファイルの更新日時を見ていきました。

wp-includes の中の version.php、post.php、class-wp-query.php などと、readme.html が、10月7日 02:22 になっていました。

前日の10月6日に公開された、WordPress 7.1.3(メンテナンスとセキュリティのリリース)です。

これが、深夜に自動で入っていました。

エラーが始まったのは、その1秒後。

一方で、plugins フォルダの中は、いちばん新しいもので10月3日。

プラグインは、今回は更新されていませんでした。

プラグインを全部止めても、直らない

7.1.3 で、世界中のWordPressが落ちているとは考えにくい。

なので、更新された本体と、どれかのプラグインの相性を疑いました。

ファイルマネージャで、wp-content/plugins を plugins_off に名前変更。

これで、プラグインは全部止まります。

が、503のまま。

そして、プラグインをフォルダ名を変更して止めている間は、管理画面(wp-admin)を開かないこと、プラグインの設定が「無効」に書き換えてしまい、止まってしまいます。

mu-plugins も、テーマも外したけど、直らない

plugins フォルダの外に、mu-plugins というフォルダがあります。

ここに置かれたファイルは、プラグインを止めても、毎回読み込まれます。

このサイトでは、Plugin Load Filter の部品(plf-filter.php)が入っていました。

WordPressのかなり深いところで動く仕組みなので、これが怪しいと思いました。

mu-plugins を mu-plugins_off に変更。

503のまま。

最後に、テーマのフォルダ(親テーマと子テーマ)も名前を変えました。

それでも、503のまま。

WordPressを起動したところで落ちていた

ここで、更新された本体のファイルを、1つずつ直接開いてみました。

version.php も post.php も class-wp-query.php も、ちゃんと開けます。

ファイルが壊れているわけではない。

データベースを使わない入口(管理画面のCSSやJSをまとめて返す load-scripts.php など)も、動いていました。

でも、wp-load.php と wp-config.php を開くと、落ちる。

プラグインもテーマも外した状態で、データベースにつないでWordPress本体を起動したところで、PHPが落ちていたわけです。

残りは、PHPでした。

PHPを8.2から8.3系に切り替えたら、復帰した

サーバーパネルの「PHP Ver.切替」で、このサイトのPHPを 8.2 から 8.3 系 に変更。

ログイン画面も、robots.txt も、すぐに表示されるようになりました。

ホッとしました。

8.2 で落ちた理由までは、突き止めていません。

8.3 系で安定しているので、このまま使っていきます。

元に戻すときの注意

名前を変えたフォルダは、1つずつ戻して、そのたびに表示を確認しました。

順番は、テーマ、mu-plugins、プラグイン。

どれを戻しても、問題なく表示されました。

ここで大事なのが、全部戻し終わるまで、管理画面(wp-admin)を開かないこと。

プラグインのフォルダが無い状態で管理画面を開くと、WordPressが全プラグインを「無効」に書き換えてしまいます。

そうなると、戻したあとに、1つずつ有効化し直すことになります。

なお、フォルダの名前変更は、本番サイトを直接触る作業です。

必ずバックアップを取ってから、自己責任で行ってください。

まとめ

止まっていたのは、午前2時22分ごろから、9時前までの、約6時間半。

WordPressの自動更新は、セキュリティのためにありがたい仕組みです。

今回は、PHPを 8.2 から 8.3 系に切り替えたら、復帰しました。

プラグインやテーマを外しても直らないときは、PHPのバージョンを切り替えてみる、という手もあります。

この記事を書いた人

大東 信仁

カンパチが好きです。

プロフィールはこちら

10月14日開催 参加者募集中
(画像をタップ→詳細へ)

ミッションナビゲート モニター
(画像をタップ→詳細へ)

広告