「PHPのバージョンを上げたら、サイトが真っ白になった」「脆弱性のニュースで8.3以上に上げたいけれど、うちのWordPressが壊れないか不安だ」——WordPressのPHPバージョンアップは、やることは画面で1つ切り替えるだけなのに、結果が読めないのがいちばん怖いところです。
結論から言うと、PHPを上げてサイトが止まる原因の多くは、WordPress本体ではなく、古いテーマやプラグインに残った書き方です。切り替える前にテーマとプラグインのファイルをClaude Codeに読ませれば、止まる場所を事前に洗い出して直せます。私たちが架空の会社のサイトで試したところ、仕込んだ14か所の問題を約1分ですべて見つけ、直したあとはPHP 8.3で警告が1件も出なくなりました。
株式会社Fyveは、中小企業のWeb運用とAI活用を支援しています。この記事では、その検証の中身と、自分のサイトでPHPを8.3以上に上げるときの手順を、非エンジニアの方にも進められる形でまとめます。
なぜ今、WordPressのPHPを上げるのか
2026年10月21日、PHPに重大な脆弱性(通称php2shell)が2つ見つかり、修正版が公開されました。修正版が出たのは8.5・8.4・8.3・8.2の4つの系列だけで、8.1以前には公式の修正版が出ていません。8.1以前のサイトは、サーバー会社が独自に修正を入れるのを待つか、修正版が出ている8.3以上に移るかのどちらかです。
8.2も安心はできません。PHPの開発チームの予定では、各系列のセキュリティ修正が出る期間は次のとおりです。
PHPのバージョン | セキュリティ修正が出る期限 |
|---|---|
8.2 | 2026年12月31日 |
8.3 | 2027年12月31日 |
8.4 | 2028年12月31日 |
8.5 | 2029年12月31日 |
WordPress自身も、古いPHPで動いているとダッシュボードに警告を出します。私たちの検証用サイト(PHP 7.4)では、次のように表示されました。「PHP の推奨バージョンは 8.3 以上です」と書かれています。

脆弱性そのものの中身と、サイト運営者が今やることは、別の記事にまとめています。
php2shellとは|PHPの脆弱性でサイト運営者が今やること
PHPを上げるとWordPressが止まる理由
PHPは、バージョンが上がるたびに古い書き方を少しずつ廃止しています。とくにPHP 8.0で、長く使われてきた書き方がまとめて使えなくなりました。7.4から8.0以上に上げるときに止まるサイトが多いのはこのためです。
WordPress本体は新しいPHPに合わせて更新されています。止まるのは、多くの場合、次のような部分です。
- 制作会社や社内の担当者が昔作った、自作のテーマ
- 問い合わせフォームなど、自作の小さなプラグイン
- 作者の更新が何年も止まっている、配布や販売のテーマ・プラグイン
古い書き方には、2つの段階があります。
段階 | 例 | 新しいPHPでどうなるか |
|---|---|---|
PHP 8.0で消えた書き方 | create_function()、each()、money_format()、get_magic_quotes_gpc()、文字列の1文字目を $s{0} と書く、implode() の引数を逆の順で書く、文字列に count() を使う | ページが止まる |
PHP 8.1・8.2で非推奨になった書き方 | 宣言していないプロパティに値を入れる、strlen() や trim() に null を渡す、utf8_encode()、文字列の中に "${変数}" と書く | サイトは動くが、ログに警告が出る。将来のPHPで止まるおそれがある |

英字の名前は覚えなくて大丈夫です。大事なのは、この種類の問題は、ファイルを読めば事前に見つけられるということです。そこをAIに任せます。
架空の会社のサイトで試したこと
検証の条件
実際のお客様のサイトは使えないので、架空の会社「株式会社サンプル木工」(家具の製作・販売)のWordPressを手元に作りました。トップ・会社概要・製品・お問い合わせの4ページと、問い合わせフォームのプラグインがあるサイトです。
- WordPress 6.8.3(PHP 7.4と8.3の両方に対応している版)
- 同じサイトを、PHP 7.4.33と、修正版のPHP 8.3.36の2つで動かす
- テーマとプラグインには、2016〜2019年ごろによくあった書き方で、問題を14か所仕込んだ(ページが止まるもの7か所、警告だけのもの7か所)
- Claude Code(2.1.306、モデルはSonnet 5.5)には、FTPで落としてきた想定で、テーマとプラグインのフォルダだけを渡した。仕込んだ場所の一覧は見せていない
PHP 7.4では普通に表示される
PHP 7.4では、4ページとも問題なく表示され、問い合わせフォームの送信もできました。見た目からは、古い書き方が残っていることは分かりません。

PHP 8.3に切り替えると、トップは「重大なエラー」になる
同じサイトをPHP 8.3で開くと、トップページはWordPressの「このサイトで重大なエラーが発生しました。」という画面になりました。

注意したいのは、ほかのページはエラーの画面すら出なかったことです。会社概要・製品・お問い合わせは、ヘッダーと見出しまで表示されたあと、本文が途中から消えました。お問い合わせのページでは、フォームそのものが表示されません。トップページだけを見て「動いている」と判断すると、ここを見落とします。

Claude Codeに「まだ直さないで」と点検だけ頼む
テーマとプラグインのフォルダを置いた場所でClaude Codeを開き、次のように頼みました。
このフォルダには、私の会社のホームページ(WordPress)のテーマとプラグインが入っています。サーバーのPHPを7.4から8.3に上げたいです。PHP 8.3にしたときに、サイトが止まる場所と、警告が出る場所をすべて探して、一覧にしてください。止まるものと警告だけのものは分けて、ファイル名と行番号、何が起きるか、直し方を書いてください。一覧は 点検結果.md に保存してください。ファイルはまだ直さないでください。
Claude Codeは12個のPHPファイルを全部読み、約55秒で、仕込んだ14か所をすべて一覧にしました。費用はClaude Codeが記録する従量課金換算の目安で約0.19ドルです。保存された一覧の冒頭は次のとおりです。

仕込んだ問題 | 見つけた数 |
|---|---|
ページが止まるもの(PHP 8.0で消えた書き方) | 7か所中7か所 |
警告だけのもの(PHP 8.1・8.2で非推奨) | 7か所中7か所 |
数だけでなく、中身にも感心したところが2つありました。
1つ目は、見落としやすい問題を、見落としやすいと書いてくれたことです。問い合わせフォームのプラグインには、フォームを表示するときに止まる問題と、「送信する」を押したときにだけ止まる問題を仕込んでいました。後者は、前者を直したあとで初めて表に出ます。Claude Codeはこれを、次のように説明していました。

ページを開いて確かめるだけのやり方では、送信まで試さない限り、この問題には気づけません。
2つ目は、何をしていないかを最初に書いたことです。この環境にはPHPが入っていないため、コードを読んで判断する点検であり、実際に8.3で動かして確かめてはいない、と一覧の冒頭に明記していました。AIの点検結果をそのまま信じず、実際に動かして確かめる工程が別に要る、ということです。
気になった点も1つあります。一覧の表では「警告のみ 6件」と数えていましたが、本文では5つの見出しにまとめていて、数え方がそろっていませんでした。中身は仕込んだ7か所をすべて含んでいたので実害はありませんが、件数をそのまま報告に使う前に、自分で数え直したほうが安全です。
直してもらう
続けて、次のように頼みました。
点検結果.md にある問題を、止まるものも警告だけのものも、すべて直してください。サイトの見た目と動きは変えず、PHP 7.4 でも PHP 8.3 でも動くようにしてください。直し終わったら、何を直したかを 点検結果.md の最後に追記してください。
修正は約31秒、約0.14ドルで終わりました。代表的な直し方は次のとおりです。
元の書き方 | 直した書き方 |
|---|---|
create_function() で並べ替えの関数を作る | 今の書き方(無名関数)に置き換え |
each() で1つずつ取り出す | foreach に置き換え |
money_format() で金額を整える | number_format() に置き換え |
get_magic_quotes_gpc() の分岐 | 今は常に無効な機能なので、分岐ごと削除 |
宣言していない値をクラスに入れる | クラスの先頭で宣言を足す |
ここでも、指示した「見た目と動きは変えず」を守るための判断が見られました。金額の直し方は、最初の一覧では桁区切りの付く書き方を提案していましたが、それだとページに埋め込まれた値が「38000」から「38,000」に変わってしまいます。そこで修正のときには、元と同じ値になる書き方に変えていました。
また、見出しの頭文字を取る処理については、正しく取る書き方にすると表示が変わるため、あえて元の動きのまま直し、「変えたい場合はこう書く」と別に書き添えていました。
直したあと、実際に動かして確かめる
直したファイルを検証用のサイトに戻し、PHP 7.4と8.3の両方で確かめました。
- 4ページとも、PHP 7.4でも8.3でも最後まで表示された
- 問い合わせフォームは、どちらのPHPでも送信が受け付けられ、入力が欠けたときはエラーの案内が出た
- 警告をすべて記録する設定にして全ページとフォームを試したところ、警告は0件だった

直したコードがPHP 7.4でも動くのは、実際の作業ではとても大事です。直したファイルを、PHPを切り替える前に先にアップロードできるからです。今の7.4のままで直したファイルを入れ、表示が変わらないことを確かめてから、PHPを切り替えられます。

自分のサイトでPHPを8.3以上に上げる手順
ここからは、検証で分かったことを、実際のサイトでの手順に置き換えます。

1. バックアップを取る
サイトのファイルとデータベースの両方を、手元に残せる形で取ります。WordPressのバックアップ用のプラグインを使うか、サーバー会社のバックアップの機能を使います。
2. テーマとプラグインを更新する
配布や販売のテーマ・プラグインは、作者が新しいPHPに対応させた版を出していることが多く、更新するだけで直ることがあります。WordPressの管理画面の「更新」から行います。
3. テーマとプラグインのフォルダを手元にコピーする
FTPソフトや、サーバー会社のファイルを管理する画面から、wp-contentの中にあるthemesとpluginsのフォルダを手元のパソコンにダウンロードします。全部でなくても、自作のテーマと、更新が止まっているプラグインがあれば十分です。
4. Claude Codeに点検だけを頼む
ダウンロードしたフォルダでClaude Codeを開き、検証と同じように頼みます。今のPHPのバージョンと、上げたいバージョンを書き換えて使ってください。
このフォルダには、私の会社のホームページ(WordPress)のテーマとプラグインが入っています。サーバーのPHPを(今のバージョン)から8.3に上げたいです。PHP 8.3にしたときに、サイトが止まる場所と、警告が出る場所をすべて探して、一覧にしてください。止まるものと警告だけのものは分けて、ファイル名と行番号、何が起きるか、直し方を書いてください。一覧は 点検結果.md に保存してください。ファイルはまだ直さないでください。
5. 直してもらい、変えた所の一覧を確かめる
一覧を読んで納得できたら、直してもらいます。「見た目と動きは変えず、今のPHPでも8.3でも動くように」「何を直したかを一覧に追記して」の2つを必ず添えます。直したあとは、一覧と、ファイルのどこが変わったかを確かめます。分からない変更があれば、そのままClaude Codeに「この変更で何が変わるのか」と聞けば説明してくれます。
6. 直したファイルを、切り替える前にアップロードする
直したファイルをサーバーに戻し、今のPHPのまま、表示とフォームの送信が変わっていないことを確かめます。
7. PHPを切り替えて、すべてのページを確かめる
サーバー会社の管理画面でPHPを8.3以上に切り替え、次を確かめます。
- トップページと、すべての種類の下層ページ(会社概要、製品、ブログの記事など)が最後まで表示されるか
- 問い合わせフォームを実際に送信できるか(表示されるだけでは不十分)
- WordPressの管理画面にログインできるか
- サイトヘルス(「ツール」→「サイトヘルス」→「情報」→「サーバー」)のPHPのバージョンが変わったか

問題が出たら、いったん元のバージョンに戻し、出たページとエラーの内容をClaude Codeに伝えて直してもらいます。戻した状態は古いPHPのままなので、長く置かないようにします。
エックスサーバーを使っている場合の切り替えの画面や、今の脆弱性への対応状況は、次の記事にまとめています。
エックスサーバーのPHP脆弱性対応|修正完了と利用者が今やること
Claude Codeに頼むときの注意
- 本番のサーバーに直接触らせない。手元にコピーしたフォルダで作業させます。FTPやサーバーのログイン情報をAIに渡す必要はありません
- 最初は「まだ直さないで」と点検だけを頼む。一覧を読んでから直させると、何が変わるのかを把握したまま進められます
- コードを読むだけの点検だと知っておく。今回もClaude Codeは、実際に動かしては確かめていないと自分で書いていました。最後は必ず、実際の画面とフォームの送信で確かめます
- 販売や配布のテーマ・プラグインを自分で書き換えると、次の更新で元に戻る。作者の対応版を待つか、別のテーマ・プラグインへの乗り換えを考えます。自分で直すのは、自作のものや、更新が止まっていて乗り換えが決まるまでのつなぎにとどめます
- 件数や要約は自分でも確かめる。今回も、表の件数と本文のまとめ方がそろっていない箇所がありました
Claude Codeを使わない場合
AIを使わずに進めるなら、次のどちらかです。
- サイトを作った制作会社や保守の担当者に頼む。PHPのバージョンを上げる作業と確認は、保守の範囲に入っていることも多いので、まず聞いてみます
- 本番とは別の場所でPHPを上げ、エラーの記録を見る。WordPressには、エラーや警告をファイルに記録する設定(WP_DEBUG_LOG)があります。本番とは別の場所でPHPを上げ、全ページとフォームを試して、記録に出たものを1つずつ直します。今回の検証でも、この記録を使って、直したあとに警告が0件であることを確かめました
どちらの方法でも、「止まる場所を事前に洗い出し、切り替える前に直しておく」という順番は同じです。
よくある質問
8.3と8.4、どちらに上げればいいですか?
どちらも今回の脆弱性の修正版が出ていて、WordPressも8.3以上を推奨しています。8.4のほうがセキュリティ修正の出る期間が1年長い(2028年12月31日まで)ので、使っているテーマとプラグインが8.4に対応していれば8.4、迷うなら8.3を選び、余裕ができてから上げる、で十分です。
WordPress本体は古いままでも大丈夫ですか?
WordPress本体も、新しいPHPに対応した版に更新しておきます。今回の検証では、PHP 7.4と8.3の両方に対応している6.8.3を使いました。WordPress本体の更新と、PHPの切り替えは、別々の日に分けると、問題が出たときに原因を切り分けやすくなります。
Claude Codeを使うのにお金はかかりますか?
Claude Codeを使うには、Claudeの有料プランか、APIの契約が必要です。今回の点検と修正にかかった費用は、Claude Codeが記録する従量課金換算の目安で、点検が約0.19ドル、修正が約0.14ドルでした。サイトの規模やファイルの数で変わります。
エンジニアでなくてもできますか?
Claude Codeに頼む部分は、この記事の文面をそのまま使えます。難しいのは、ファイルのダウンロードとアップロード、PHPの切り替えといった、サーバーを触る部分です。不安なら、そこだけ制作会社に頼み、点検の一覧を渡して直してもらう分担もできます。
テーマやプラグインの数が多いときは?
まず、更新できるものを更新し、残った自作のものと更新が止まっているものだけを点検します。全部を一度に渡すより、テーマ1つ・プラグイン数個ずつに分けたほうが、一覧も読みやすくなります。
まとめ
- PHPを上げてWordPressが止まる原因の多くは、古いテーマ・プラグインに残った、PHP 8.0で消えた書き方
- 止まり方は「重大なエラー」の画面だけではない。ページの途中から白くなる、フォームだけ消える、送信したときだけ止まる、もある
- 架空の会社のサイトでは、Claude Codeが約55秒・約0.19ドルで、仕込んだ14か所をすべて一覧にし、約31秒・約0.14ドルで直した。直したあとはPHP 8.3で警告0件
- 手順は、バックアップ → 更新 → 手元にコピー → 点検だけ頼む → 直して確かめる → 直したファイルを先にアップロード → PHPを切り替えて全ページとフォームを確かめる
- AIの点検はコードを読むだけ。最後は必ず、実際の画面とフォームの送信で確かめる

