Stellarium

WordPressのPHPバージョンアップ手順|古いサイトで止まる書き方と、確かめ方

あおい
WordPressのPHPバージョンアップ手順|古いサイトで止まる書き方と、確かめ方

「サーバー会社から、PHPのバージョンを上げてくださいというメールが来た」 「上げたらサイトが表示されなくなる、と聞いて怖くて触れていない」

自社のホームページを任されている担当者さんから、この相談をよく受けます。PHP(ピーエイチピー。WordPressを動かしているプログラムの言語)の版を上げる操作そのものは、サーバーの管理画面でボタンを押すだけ。怖いのはその後です。

2026年10月、旅行会社のさくらツーリストさんのサイトで、PHPを実際に上げた。会社のサイトは、切り替えた直後に全845ページのうち35ページが止まりました。直してから公開に戻したので、お客さんの目に触れたことはありません。何が止まって、どう見つけて、どう確かめたのか。その記録をもとに、手順と確かめ方を書きます。

WordPressのPHPバージョンを確認する方法

この章の要点管理画面の「サイトヘルス」か、レンタルサーバーの管理画面で見られる。8.1以前なら上げる時期。

早いのはWordPressの管理画面。

「ツール」から「サイトヘルス」を開き、上の「情報」タブを押します。並んだ項目の中の「サーバー」を開くと、PHPのバージョンが出てきます。管理者の権限で入っていれば誰でも見られる場所。

レンタルサーバーの管理画面でも確かめられます。こちらはドメインごとに版が並ぶので、サイトを何個か持っている会社なら、こちらを見たほうが一度に済む。

出てきた数字の見方はこうです。

出てきた版どういう状態か
8.2〜8.5今も修正版が出ている版。最新の修正版になっているかだけ確かめる
8.1以前(7.4など)PHPの開発元からの更新が止まった版。上げる時期
5.xかなり古い。WordPressかテーマごと作り直しになることが多い

WordPress公式の動作要件のページは、PHP 8.3以上をすすめています。8.1以前の版は、PHPの開発元からの更新がもう出ません。

いまPHPのバージョンアップを急ぐ理由(2026年10月のPHP2Shell)

この章の要点PHP本体に乗っ取りの脆弱性が見つかり、修正版が出たのは8.2以降。古い版のサイトは止めて上げた。

2026年10月21日、PHPの開発元が緊急の修正版を出しました。PHP2Shell(ピーエイチピー・ツー・シェル)と呼ばれる2つの脆弱性への対応です。外からサーバーの上で好きなプログラムを動かされる、つまりサイトを乗っ取られる種類のもの。

厄介なのは、PHP本体の弱点だという点です。サイトの作り方に落ち度がなくても、古いPHPで動いていれば対象になる。WordPressのサイトももちろん入ります。

修正版が出たのは8.2、8.3、8.4、8.5の4つの系列でした(8.2.35、8.3.36、8.4.27、8.5.12)。BleepingComputerの記事によると、7.4や8.1などの古い系列は、自分でPHPを組み立てる人向けの最小限の修正があるだけで、PHP 7以前のサーバーは修正済みの版へ移るように、とされています。

さくらツーリストさんのサイトは、会社のサイトと沖縄バスのサイトがPHP 7.4。修正版が出ない版でした。日付が変わるころまでにメンテナンスの画面に切り替えて公開を止め、22日に上げて公開に戻しました。止めている間も、電話での予約はいつもどおり受けていた。

契約していたレンタルサーバーのほうは、21日のうちにサーバー全体のPHPを修正版に入れ替えていました。8.2以上で動いていたサイトは、それで対応が済んでいます。

ニュースとしてはここまで。

ただ、今回の騒ぎがなくても、PHPの版はいずれ上げることになります。ここから先は、次にいつ上げるときにも使える手順の話です。

PHPバージョンアップの手順

この章の要点止めて、記録して、本体を新しくして、切り替えて、見比べて、戻す。切り替えそのものは数分。

さくらツーリストさんの会社のサイトと沖縄バスで踏んだ順番を、そのまま並べます。

PHPバージョンアップの6つの段階会社のサイトと沖縄バスで、2026年10月22日に踏んだ順番
外からはメンテナンス表示にするこちらの回線からだけ、サイトの中身が見えるようにする。
全ページの状態とバックアップを取る表示できるか、ページの大きさ、タイトルを全ページ分記録する。
WordPressとプラグインを新しくする本体が古いサイトだけ。PHPを上げる前にやる。
サーバーの管理画面でPHPを切り替える操作は数分。反映まで2〜3分待つ。
全ページを見比べて、止まった所を直す記録と同じになるまで、直しては見比べる。
フォームと管理画面を確かめて公開に戻すメンテナンス表示を外す。

いくつか補足しておきます。

1つ目のメンテナンス表示は、止めずに上げられるなら要らない。今回は修正版の出ない版で公開し続けるほうが危なかったので、先に止めました。止めている間は、検索エンジンに「一時的な停止」と伝わる503という番号を返す設定にしています。

2つ目の記録が、手順の中で一番大事な所。ここを飛ばすと、上げたあとに「このページは前から壊れていたのか、今壊れたのか」が分からなくなります。会社のサイトでは845ページを記録し、そのうち39ページは切り替え前から「見つかりません」の状態でした。前からそうだったと分かっていれば、直す対象から外せる。

沖縄バスでは、記録と一緒にファイル3,170個とデータベースのバックアップを取りました。何かあればすぐ戻せる状態にしてから次へ。

4つ目の切り替えは、拍子抜けするほど短い作業です。管理画面で版を選んで保存するだけで、反映まで2〜3分でした。

PHP 8で止まる、古いサイトの書き方

この章の要点引用符のない文字は、PHP 7では警告で済み、PHP 8ではページが止まる。空の料金を数字に整える処理も止まる。

会社のサイトでPHPを8.4に切り替えた直後、35ページで「このサイトで重大なエラーが発生しました」と出ました。

WordPress本体は7.0.7で、新しい版です。それでも止まった。原因はテーマ(サイトの見た目を作っているファイル)の中の、古い書き方でした。WordPress本体が新しいから大丈夫、とは言えない理由がここにあります。

止まった書き方は、大きく分けて2種類ありました。

引用符のない文字が、PHP 8では「定義されていない定数」として止まる

長いタイトルを途中で切って「・・」を付ける部分に、こういう書き方がありました。実際のコードを短くしたもの。

// PHP 8.4 で止まる書き方
echo mb_substr($title, 0, 20) . ・・;
$args = array('post_type' => taiken);

// 引用符で囲むと動く
echo mb_substr($title, 0, 20) . '・・';
$args = array('post_type' => 'taiken');

・・ や taiken が引用符で囲まれていません。PHPはこれを「定数(あらかじめ名前を付けておいた値)」と読みます。そんな名前の定数はどこにもない。PHP 7までは警告を出しつつ、文字としてそのまま扱ってくれていました。PHP 8からは、そこでページごと止まります。

会社のサイトでは、ニュースやオンラインツアーの一覧など17ページがこれで止まり、テーマのファイル23個を直しました。スタッフ紹介の18ページも同じ種類で、こちらは2個。どちらも書き方を直しただけで、見た目と文章は変えていません。

もっと古い、PHP 5の頃に作られたページでは、$row[name] のように配列の名前にも引用符がないことがあります。理由は同じなので、$row['name'] に直す。PHPで作っていた13ページをHTMLに書き出して、PHPを使わない置き場所に移したマカオ旅行のサイトでは、書き出すときに、写しのファイルへこの直しを機械でかけました。

空の値を数字に整える処理が、PHP 8では止まる

1人宴会のサイトでは、料金が入っていないプランのある宿のページが止まりました。

// 料金が空('')のプランで止まる
echo number_format($price);

// 空なら何も出さない(PHP 7 のときと同じ見た目)
if ($price !== '') echo number_format($price);

number_format は数字を3けたごとに区切って出す関数。PHP 7では、空の文字を渡すと警告を出して何も表示しませんでした。PHP 8では型の違いとして扱われ、ページが止まります。直すときは、空のときに何も出さない、という前の見た目に合わせました。直した所は6か所。同じサイトの体験談のページ(26ページ)も別の古い書き方で止まっていて、テーマの1か所を直しています。

止まった所の探し方と、全ページの見比べ方

この章の要点まず検索で怪しい書き方を潰し、そのあと全ページを切り替え前の記録と機械で比べる。

確かめ方は2段に分けました。先にファイルを検索して怪しい書き方を潰し、そのあと全ページを見比べる。

検索は、テーマのフォルダに対してこういう命令をかけます。

# 「=> 文字」で引用符がないもの(true、false、null も引っかかるので目で選ぶ)
grep -rnE "=> *[A-Za-z_]+ *[,)]" wp-content/themes/
# 配列の名前に引用符がないもの
grep -rnE "\[[A-Za-z_]+\]" wp-content/themes/ --include=*.php

検索で全部は見つかりません。「・・」のような記号の並びは、この検索にはかからない。だから見比べのほうが本番です。

見比べは、全ページを機械で開いて、次の4つを切り替え前の記録と並べました。

見るもの何が分かるか
表示できたか「見つかりません」やサーバーのエラーに変わったページ
ページの大きさ途中で途切れて短くなったページ
タイトル別のページが出ていないか
エラーの文字「重大なエラー」「Fatal error」などがページに出ていないか

本番と、切り替えたあとのサーバーの中身を同じURLで並べて取る、小さなプログラムを書いて回しました。845ページを手で開いて回るのは現実的ではない。機械に任せれば、直すたびに何度でも見比べ直せます。

会社のサイトの見比べの結果を、回ごとに並べるとこうなる。

会社のサイトで「重大なエラー」が出たページの数全845ページ。直しては見比べ直した3回分
切り替えた直後35ページ
一覧の17ページを直したあと18ページ
スタッフ紹介も直したあと0ページ

3回目で、表示できるページ、大きさ、タイトルのすべてが切り替え前と一致しました。前から見つからなかった39ページも、そのまま。

大きさが変わったからといって、壊れたとは限らない。消防団旅行のサイトでWordPressを6.2.14から7.1.3に上げたときは、全330ページの大きさが同じように約6.8KBずつ増えました。WordPress 7が標準で足す部品の分で、表示できるかとエラーの有無は変わっていません。全ページが同じだけ増えているなら本体の変化、一部だけ大きく変わっているならそのページを開いて見る、という分け方で足りる。

フォームは、見比べとは別に手で確かめました。会社のサイトは空のまま送って入力を求める表示が出るまで、沖縄バスは試しの内容で確認画面に進むまで。本当に送ると社内とお客さんにメールが届いてしまうので、送信の確認はサイトの担当者さんにテストで1件送ってもらっています。

WordPress本体が古いなら、PHPより先に本体とプラグインを上げる

この章の要点2017年の版のWordPressはPHP 8では動かない。本体とプラグインを先に上げ、最後にPHPを切り替える。

沖縄バスのWordPressは4.8.25でした。2017年の版。

この版はPHP 8に対応していません。PHPだけ先に上げると、ページの一部どころかサイト全体が止まります。そこで、PHPは7.4のまま、WordPressを7.1.3に上げ、使っているプラグイン7つを最新版にしました。PHPを8.4に切り替えたのはその後。

対象前後
WordPress4.8.257.1.3
MW WP Form5.0.35.1.8
Smart Custom Fields3.1.55.0.8
Easy FancyBox1.62.3.25
PHP7.48.4

プラグインは7つのうち3つだけを抜き出しています。新しいファイルは別の場所に置いてから一度に入れ替えたので、作業の途中で壊れた状態になる時間はありませんでした。全111ページを見比べて、表示できるページ、大きさ、タイトルがすべて一致。

古いサイトでつまずく所は、ほかにもある。

有料のプラグインは、契約が切れていると自動で更新できません。消防団旅行では、有料版のAdvanced Custom Fieldsだけが契約の情報がなく、6.1.6のまま残しました。ほかの19個のプラグインとテーマ7個は新しくした。

サーバーそのものが古くて、PHPだけを新しくできないこともある。1人宴会のサイトは、作りの古いサーバーで動いていてPHPを上げる手段がありませんでした。同じサーバー会社の中に新しいサーバーを用意して中身を移し、PHPを7.4から8.5に、WordPressを5.8から7.1にしています。サーバーの住所はそのまま付け替えたので、見られなかったのは数十秒だけ。全208ページが切り替え前と一致しました。

ナイトツアーのサイトは、WordPressではない手作りのHTMLとPHPのページでした。PHPを7.4から8.3にして、前後で54ページを比べて差はなし。3ページは切り替え前から止まっていたページで、記録があったので慌てずに済んでいます。

WordPress本体やプラグインの古さが目立つなら、PHPの話を超えて作り直しを考える時期かもしれません。判断の材料はWordPressサイトのリニューアルに書きました。

さくら・ロリポップなど、レンタルサーバーでの切り替え方

この章の要点版はサーバーの管理画面で選ぶ。ドメインごとに変えられるので、1サイトずつ上げられる。

ロリポップでもさくらでも、PHPの版は管理画面で選ぶ。

さくらツーリストさんの会社のサイトと沖縄バスはロリポップで、管理画面の「PHP設定」で版を選ぶだけでした。.htaccess(サーバーの動きを決める設定ファイル)では変えられない。版はドメインごとに選べるので、会社のサイトだけ先に8.4にして、沖縄バスはWordPressを上げ終わってから8.4にしています。反映までは2〜3分。

さくらインターネットのレンタルサーバも、コントロールパネルで版を選ぶ形です。細かい手順はさくらのサポートサイトの「PHPのバージョン変更」の案内で確かめてください。エックスサーバーなど、ほかのレンタルサーバーも管理画面で選ぶのが基本です。

注意したいのは2つ。

ひとつは、同じサーバーに何サイトも載っているときです。サーバー全体の既定の版を変えると、全部のサイトが一度に切り替わることがある。1サイトずつ上げたいなら、ドメインごとの設定を使います。

もうひとつは、版の数字だけ見て安心しないこと。PHPには「モジュール版」「CGI版」のような動かし方の違いがあり、ナイトツアーを置いているサーバーでは、7.4のCGI版から8.3のモジュール版に変えています。版と一緒に動かし方も変わったので、ここでも全ページを見比べました。

余談ですが、今回ずいぶん待たされたのはPHPではなく、管理画面へのログインでした。新しい端末から入ると本人確認のメールが届く仕組みで、そのメールが先方の担当者さんの受信箱に飛んでしまう。作業の日は、担当者さんに2段階認証を一時的に外してもらい、終わってから戻してもらう段取りにしました。ログインの情報を誰が受け取るのかも、作業の前に決めておくと慌てません。

PHPバージョンアップの費用は、何に時間がかかるかで決まる

この章の要点切り替えは数分。費用を分けるのは、記録と見比べ、止まった所の修正、本体の更新、サーバーの引っ越し。

保守の料金は、サイトの規模で変わるので、Stellariumではその都度お見積もりにしています。ここでは金額の代わりに、どこに時間がかかるのかを並べてみる。

作業時間を左右するもの
切り替え前の記録ページの数(会社のサイトは845ページ、沖縄バスは111ページ)
本体とプラグインの更新WordPressの古さ、プラグインの数、有料プラグインの契約
止まった所の修正テーマに残る古い書き方の数(会社のサイトは25ファイル)
全ページの見比べ修正と見比べを何回くり返すか(会社のサイトは3回)
サーバーの引っ越し今のサーバーでPHPを上げられないときだけ

管理画面で版を切り替える作業は、この表のどこにも入っていません。それくらい短い作業なんです。

見積もりを見るときは、「PHPを上げる」の1行だけになっていないかを確かめてください。全ページの見比べが入っているか、止まったページの修正まで含むか、戻せるバックアップを取るか。この3つが書いてあれば、上げたあとに壊れたまま放っておかれる心配は減ります。

自分でやってもいいとき、頼んだほうがいいとき

自分でやっても大丈夫なのは、こういうサイトです。

  • WordPress本体とプラグインが新しく、テーマも数年以内に作ったもの
  • ページが数十ほどで、上げたあとに全部を手で開いて回れる
  • サーバーの管理画面で、元の版にすぐ戻せる

逆に、本体が5年以上前の版のまま、ページが数百ある、テーマを作った会社と連絡が取れない、のどれかに当てはまるなら、頼んだほうが早く済む。会社のサイトのように、本体が新しくてもテーマで止まることがあるからです。

止まったときに元の版に戻すだけなら、担当者さんでもできます。ただ、戻したままでは古い版で動き続けることになる。止まった原因を直すところまでが、PHPのバージョンアップです。

PHPだけでなく、WordPressの更新やバックアップをふだんから誰が見るのかも、この機会に決めておくと次が楽になります。保守でやることの全体はWordPressの保守運用にまとめました。

CONTACT

PHPの版を上げる作業、まるごとお任せいただけます

切り替え前の全ページの記録、WordPress本体とプラグインの更新、止まったページの修正、全ページの見比べまで。ふだんの更新とバックアップも保守として引き受けます。

ご相談は無料です。そのまま依頼しなくても大丈夫です。

PHPを上げる前に確かめること

作業の前に、この順で確かめておけば迷わない。

  • 今のPHPの版を、サイトヘルスかサーバーの管理画面で確かめたか
  • WordPress本体とプラグインの版を確かめ、古いものを先に上げる段取りにしたか
  • 有料プラグインの契約が残っているかを確かめたか
  • ファイルとデータベースのバックアップを、戻せる形で取ったか
  • 全ページについて、表示できるか、大きさ、タイトルを記録したか
  • 切り替えたあと、全ページを記録と見比べる手段を用意したか
  • フォームの送信を、誰がテストするか決めたか
  • 止まったときに元の版へ戻す方法を、サーバーの管理画面で確かめたか

PHPの版は一度上げたら終わり、ではない。今回8.4にしたサイトも、何年か先には次の版へ上げることになります。そのとき今回の記録と見比べの道具が残っていれば、次は一から用意しなくて済む、というのが今回やってみた実感です。

Stellariumでは、WordPressのPHPの版上げ、本体とプラグインの更新、古い書き方の修正、全ページの見比べまでを引き受けています。PHPを上げられない古いサーバーからの引っ越しや、PHPを使わない置き場所への書き出しも、今回と同じ手順でできます。

FAQ

WordPressで使っているPHPのバージョンはどこで確認できますか?
WordPressの管理画面の「ツール」から「サイトヘルス」を開き、「情報」タブの「サーバー」を開くと、PHPのバージョンが出ます。レンタルサーバーの管理画面のPHPの設定画面でも、ドメインごとの版を確かめられます。
PHPのバージョンを上げるとWordPressのサイトは壊れますか?
テーマやプラグインに古い書き方が残っていると、そのページだけ「重大なエラー」で止まります。2026年10月に上げた会社のサイトでは、全845ページのうち35ページが止まり、テーマのファイル25個の書き方を直して元に戻しました。上げる前に全ページの状態を記録しておき、上げたあとに同じページを見比べると、止まったページを漏れなく見つけられます。
WordPress本体が古いままPHPだけ上げてもいいですか?
おすすめしません。2017年の版のWordPress(4.8)はPHP 8では動かないので、沖縄バスのサイトでは先にWordPressを7.1に、使っているプラグイン7つを最新版にしてから、PHPを7.4から8.4に上げました。順番を逆にすると、サイト全体が止まります。
PHPのバージョンアップの費用は何で変わりますか?
ページの数、WordPress本体とプラグインがどれだけ古いか、テーマに古い書き方がどれだけ残っているか、サーバーごと移す必要があるか、で変わります。管理画面で版を切り替える操作は数分で終わり、時間がかかるのは切り替え前の記録、止まったページの修正、全ページの見比べのほうです。

関連記事

古いWordPressとPHPの脆弱性|旅行会社の31サイトを棚卸しした実測ホームページ制作

古いWordPressとPHPの脆弱性|旅行会社の31サイトを棚卸しした実測

2026年10月のPHPの脆弱性(PHP2Shell)をきっかけに、旅行会社さくらツーリストが持つドメイン46個を洗い出しました。中身を確かめた31サイトのPHPとWordPressの版、更新・静的化・移転・停止への振り分け、全ページ比較の件数、サーバー移行で止まりかけたメール、使っていなかったVPS、GA4で問い合わせが0件に見えていた理由まで、測った数字でまとめています。

訪日客向けの予約フォームの作り方|インバウンドの問い合わせを自社サイトで受ける項目・料金・決済の見せ方ホームページ制作

訪日客向けの予約フォームの作り方|インバウンドの問い合わせを自社サイトで受ける項目・料金・決済の見せ方

訪日客から自社サイトで予約を受けるときの、フォームに入れる項目と入れない項目、日時が未定の人を落とさない聞き方、出張料金と見積もり合計の見せ方、決済とキャンセルの決まり、24時間以内の返信、届かない通知メールの防ぎ方、流入元の残し方を、北海道の出張撮影サービスの実例でまとめました。

多言語サイトの作り方|インバウンド向けホームページを英語化する手順(英日2言語サイトの実例)ホームページ制作

多言語サイトの作り方|インバウンド向けホームページを英語化する手順(英日2言語サイトの実例)

訪日観光客向けに多言語のホームページを作るときは、主役の言語、URLの分け方、翻訳ファイルの持ち方、hreflangとサイトマップ、英語版で書き足す情報、予約の導線の順に決めます。北海道の撮影スタジオの英日2言語サイトで実際に決めたことと、作る途中で見つかった不具合をもとにまとめました。