10月21日、PHPに重大な脆弱性が見つかりました。
PHPは、WordPressで作られたサイトを裏で動かしているプログラムの言語です。サイトの見た目には出てきませんが、サーバーの中で毎回動いています。
翌日から2日かけて、サーバーをお預かりしているサイトのPHPを一つずつ確かめ、古いものは新しい版に上げました。そのなかに、PHPを上げると全ページが止まるサイトがありました。
何が起きていたのかと、上げる前に何を確かめたかを書きます。サーバー会社から「PHPのバージョンを上げてください」という案内が届いたときの参考にしてください。
10月21日に、何があったか
PHPの開発元が、認証なしで外からサーバーにプログラムを実行させられる脆弱性を2件公表しました(CVE-2026-109618/CVE-2026-109619)。深刻度は10点満点で9.2です。
修正版はPHP 8.2・8.3・8.4・8.5に出ました。8.1より古いPHPには、開発元からの修正は出ていません。
エックスサーバーは同じ日の夕方から管理画面などを止めて対応し、古いPHP(5.1〜8.1)にも、設定を変えずに修正を当てています。今回は、古いPHPのままのサイトもサーバー会社に守られた形です。
ただ、これは公式のサポートが終わった版にまで、サーバー会社が自主的に手を広げた結果です。次も同じとは限りません。PHP 8.2も、2026年12月31日で公式のサポートが終わります。
上げたら、全ページが止まるサイトがあった
確かめると、まだPHP 7系で動いているサイトがありました。7系の最後の版の7.4でさえ、2022年11月に公式のサポートが終わっています。
サーバーの管理画面では、PHPのバージョンは一覧から選び直すだけで切り替わります。ところが、そのうち2つは、そのまま8系に上げるとトップページも管理画面も表示されなくなります。
原因はPHPではなく、WordPress本体でした。どちらも本体が2017年ごろの版(4.8と4.9)のまま止まっていて、その版は新しいPHPで使えなくなった古い書き方を含んでいます。読み込みの最初で止まるので、どのページも開きません。
止まったまま気づかずにいると、問い合わせも予約も受けられない状態が続きます。なので本番で切り替える前に、手元に同じ構成のサイトを作り、新しいPHPでどこが止まるかを先に洗い出しました。
先に上げるのは、WordPressのほう
洗い出してみると、答えは順番でした。PHPより先にWordPress本体を上げておけば、止まらずに済みます。
- サイトのファイルとデータベースのバックアップを取る
- 使っていないプラグインを止める(古いまま止まっているものが、新しいPHPで全体を巻き込むため)
- PHPは古いまま、WordPress本体を最新に上げる
- PHPを8.3に切り替える
- 全ページと管理画面を開いて確かめる。だめなら、PHPは管理画面で元の版に戻せる

WordPressの最新版は、PHP 7.4でも動きます(2026年10月時点。2つのサイトとも、7.4のまま本体を上げて確かめました)。古いPHPのままでも本体だけを先に新しくできるので、この順番が成り立ちます。
PHPが7.2のようにさらに古いサイトは、2段に分けました。まずPHPを7.4まで上げ、そこでWordPress本体を最新にし、最後に8.3へ切り替える。一度に飛ばさず、それぞれの段で全ページが開くことを確かめてから次へ進みます。
逆の向きの話もあります。お問い合わせフォームでよく使われるプラグインは、最新版がPHP 8.3以上でないと入りません(2026年10月時点)。PHPが古いままだと、プラグインを新しくすることもできない、ということです。
古すぎて、更新を取りに行けなかった
一つだけ、手順どおりに進まなかったことがあります。2つのサイトとも、同じところで止まりました。
WordPress本体を上げようとしたところ、更新ファイルのダウンロードの時点で失敗しました。2017年の版が持っている「安全な接続先かどうかを確かめるための一覧」が古すぎて、今の配布元を信用できなかったのです。

その一覧のファイルだけを今の版のものに入れ替えて、ようやく更新が通りました。
何年も触っていないサイトは、PHPやプラグインだけでなく、更新するための仕組みそのものが古くなっています。ボタンを押せば済むはずの作業が、押しても進まない状態です。
上げるついでに、見ておくこと
PHPを上げる作業では、表示が崩れていないかと一緒に、次のことも確かめました。
- テーマのコード。サイトの見た目を作っているテーマにも、古い書き方が残っています。今回の2つのサイトはテーマに問題がありませんでしたが、ほかのサイトでは、昔の書き方のせいで新しいPHPでは全ページが止まるテーマや、警告の文が画面に出て表示が崩れるテーマがありました。WordPress本体を上げても、テーマのコードは直りません。該当する箇所を、新しいPHPに合う書き方に直す必要があります
- エラーの表示設定。サーバーの設定でエラー表示がオンになっていると、何かあったときに、エラーの文面と一緒にサーバー内のファイルの場所が画面に出ます。攻撃する側にとっては手がかりになるので、公開しているサイトではオフにします
- 使っていないプラグイン。止めているつもりで、ファイルが残っているものがあります。動いていなくても、新しいPHPで問題を起こすことがあります
- 画面の外の動き。トップページが表示されても、お問い合わせの送信や管理画面の投稿で止まることがあります。公開ページと管理画面の両方を開いて、投稿の下書き保存まで試します
なぜ、2017年の版のまま残っていたのか
止まりかけた2つのサイトは、どちらも保守の契約がないサイトでした。保守の契約がないサイトでは、WordPressの更新はご依頼をいただいたときに行います。こちらの判断で、本体を書き換えることはしません。
更新をおすすめしても、見送られることは珍しくありません。理由は、どれももっともです。
- 今ちゃんと表示されているのに、触って壊れたら困る
- 費用をかけても、見た目は何も変わらない
- サイトの担当者が辞めて、誰に決めてもらえばいいか分からない
私もサイトを持つ側として、その気持ちは分かります。動いているものに、お金と手間をかけて手を入れる理由は見えにくいからです。
ただ、そうして1年ずつ延ばすうちに本体が古くなり、気づいたときにはPHPも上げられなくなっています。今回止まりかけたのは、その積み重ねでした。
それでも今回は、保守の契約があるサイトを先に済ませたうえで、契約の外のサイトも上げることにしました。10月22日の時点では、古いPHPへの修正は、サーバー会社がまだ順次当てている途中でした。乗っ取られたサイトは、見に来た人や、同じサーバーに置いているほかのサイトにまで被害を広げます。サーバーをお預かりしている以上、そこは止めておく必要がありました。
同じ週、古いサイトを前にして、どこまで手を出すかを迷いながら作業した同業の方も多かったと思います。保守の契約は、更新を延ばしにしないための仕組みであり、こういうときに迷わず手を入れるための約束でもあります。
問い合わせが来る前に、終わったと知らせた
この脆弱性は、ネットのニュースでも取り上げられていました。「うちのサイトは大丈夫か」と心配になる方もいたと思います。
なので、問い合わせをいただく前に作業を終え、メールや、ふだんやり取りしている連絡手段で「対応が終わりました」とお知らせしました。
その中に、注意書きを1つ添えています。作業は、保守の契約があるサイトから先に進めた、ということです。契約がないサイトも同じ週のうちに対応しましたが、順番があったことは隠さずに書きました。
自分のサイトで確かめること
3つ見てください。
- PHPのバージョン。WordPressの管理画面の「ツール」→「サイトヘルス」→「情報」→「サーバー」に出ます。8.2以下なら、上げる時期を決めておく
- WordPress本体のバージョン。管理画面のダッシュボードに出ます。何年も更新していないなら、PHPより先にこちら
- 最後に誰が更新したか。社内で答えられる人がいないなら、PHPの切り替えも、だれもやらないまま期限が来ます
PHPを上げる前の確かめ方や、他社が作ったサイトの引き継ぎについては、サイト保守・月額伴走のページに書いています。保守そのものが要るかどうかは、ホームページの保守は、本当に必要かにまとめました。
PHPの切り替えそのものは、管理画面で一覧から選び直すだけです。操作は1分もかかりません。その1分を、安心して押せる状態にしておくのが保守の仕事です。
今回の件でいただいた電話は、1件だけでした。保守がうまくいった週は、たいてい何も起きなかったように見えます。