自分のWordPressで学ぶPHP講座(AIの変更を判定する)

区分4 サーバーと版★★

No.10 PHP 8.3への版上げ

PHP の版を上げる時に、何が壊れやすくて、どう確かめるかを扱います。版上げは「やるかやらないか」ではなく、いつ・どう安全にやるかの話です。出る頻度はときどきで、この回はしっかり読みます。
目次
  1. 第0章 前提知識
  2. 第1章 7.4 から 8.x に上げると壊れやすい書き方
  3. 第2章 版上げの前と後の確かめ方
  4. 確認問題

第0章 前提知識

① 版の番号の読み方  :8.3.12 なら「8.3」が大事

PHP の版は「8.3.12」のように、3つの数字で表します。

サーバーで「PHP 8.3 に切り替える」と言う時は、最初の2つの数字を選びます。 最後の数字は、サーバー側で自動的に更新されることが多いです。

② サポート期限  :期限が切れた版は、安全の修正が出ない

PHP の各版には、修正を出してもらえる期限があります。 期限が切れた版は、見つかった弱点が直されません。サイトが乗っ取られる危険が上がります。

期限は、版ごとに決まっています。覚える必要はなく、必ず php.net の Supported Versions のページで確かめます。 2026年時点の目安では、7.4 の期限はとうに切れていて、8.3 はまだ安全の修正が出る版です。日付は変わらないものではないので、上げる前に見直してください。

第1章 7.4 から 8.x に上げると壊れやすい書き方

7.4 の頃に書かれたコードを 8.x で動かすと、次の4つで問題が出やすくなります。 AIがPHPの版上げの変更を出してきた時は、この4つが直されているかを見ます。

① 未定義の配列キー 必ず覚える

存在しない名前で、配列の値を取り出そうとすることです。

$name = $data['name'];   // 'name' が入っていない時

7.4 では軽い注意で済んでいたのが、8.0 から警告になりました。 警告が画面に出ると、ページの崩れや、真っ白になる原因にもなります。

直し方は、No.04 で見た isset で、あるかを確かめてから取り出す形です。 AIの変更で、この書き方が増えていたら、isset が付いているかを見ます。

② null を渡してはいけない関数 必ず覚える

文字を扱う関数に、null(「何も入っていない」を表す値)を渡すと、8.1 から非推奨の警告が出ます。 非推奨は「今は動くが、将来使えなくなる」という意味です。

strlen($title);   // $title が null の時

投稿のタイトルや説明文など、空かもしれない値が入る所で出ます。 直し方は、先に空でないかを確かめるか、空の文字を代わりに使う形です。

③ 動的プロパティ さらっと

クラス(データと動きをまとめた入れ物)に、あらかじめ宣言していない名前の値を、あとから足すことです。 8.2 から非推奨になりました。

自分で書いたコードより、古いプラグインやテーマに多く出ます。 自分で直すのではなく、まず「新しい版が出ていないか」を調べるのが先です。

④ 古いプラグインとテーマ 必ず覚える

自分のコードより、更新が止まったプラグインやテーマが一番の原因になります。 作者が新しい PHP に対応していなければ、こちらでは直せません。

確かめ方は、第2章の「必要な PHP のバージョン」です。

第2章 版上げの前と後の確かめ方

① 上げる前に調べる 必ず覚える

次の4つを、上げる前にやります。

  1. php -l:PHP のファイルの書き方(文法)に誤りが無いかを調べる命令。サーバーで php -l ファイル名 と打つと「No syntax errors detected」と返れば文法は通っています。ただし、上の4つのような「動かして初めて出る問題」は見つけられません
  2. エラーログ:今の版で、すでに警告が出ていないかを見ます。多い警告は、上げた後も出ます
  3. サイトヘルス:WordPress の管理画面の「ツール」にある診断です。PHP の版や、更新が必要な物を教えてくれます
  4. プラグインの「必要な PHP のバージョン」:プラグイン一覧から詳細を開くと書かれています(作者が書いている場合)。新しい版に対応しているか、更新が止まっていないかを見ます

AIに頼む時は、「この4つを私の代わりに調べて、結果を表で出して」と頼むのも手です。 ただし、サイトヘルスの画面は自分の目でも見てください。

② サーバーパネルでの切り替えの流れ さらっと

Xserver などのレンタルサーバーでは、サーバーパネルの中に PHP の版を選ぶ項目があり、ドメインごとに切り替えられます。 大まかな流れは次のとおりです。

  1. 切り替え前に、サイトの控え(バックアップ)を取る
  2. まず、重要でないドメインや、テスト用のサイトで切り替える
  3. サーバーパネルの PHP の版の画面で、対象のドメインの版を選んで確定する
  4. 数分待って、トップ・記事・管理画面を開いて確かめ、エラーログを見る
  5. 問題が出たら、元の版に戻す

全ドメインを一度に切り替えないことが大事です。 複数のサイトを運用していると、1つのサイトの古いプラグインが原因で、そのサイトだけ壊れることがあるからです。 画面の名前や、押す場所は、サーバー会社の案内を見て確かめてください。

③ 上げた後に見る 必ず覚える

切り替えのあと、次を見ます。

警告が出ても画面は崩れていないことがあります。 その場合も、ログを見ておくと、あとで壊れる前に直せます。

○ よくある勘違い:サイトが表示されたので成功 → 警告はログにだけ出ていることがあります
○ よくある勘違い:版は新しいほど安全 → 古いプラグインが対応していないと壊れます。期限と対応の両方を見ます
○ 関係する単元:画面に出さずログに残す設定は No.09、変更前の控えは No.06

期限は php.net の Supported Versions で確かめる。上げる前に php -l・エラーログ・サイトヘルス・プラグインの対応を見る。ドメインごとに、1つずつ切り替える。

確認問題

問1 AIが「php -l でエラーが無かったので、8.3 に上げても大丈夫です」と言いました。どう返す?

問2 7.4 から 8.x に上げた後、画面に「Undefined array key」の警告が出ました。これは何の問題?

問3 複数のサイトを運用しています。8.3 への切り替えの進め方として、本文に合うのは?

問4 「PHP 8.3 はいつまで安全の修正が出るか」を調べる時、本文で勧めているのは?

出典:php.net「Supported Versions」(https://www.php.net/supported-versions.php)、php.net「PHP 7.4 から PHP 8.0 への移行」(https://www.php.net/manual/ja/migration80.php)、同「8.1 への移行」(https://www.php.net/manual/ja/migration81.php)、同「8.2 への移行」(https://www.php.net/manual/ja/migration82.php)、developer.wordpress.org「Site Health」に当たる、WordPress 管理画面「ツール」のサイトヘルス(https://developer.wordpress.org/ 内の解説を参照)。期限の日付に触れた部分は2026年時点の目安。