自分のWordPressで学ぶPHP講座(AIの変更を判定する)
区分4 サーバーと版★★PHP の版は「8.3.12」のように、3つの数字で表します。
サーバーで「PHP 8.3 に切り替える」と言う時は、最初の2つの数字を選びます。 最後の数字は、サーバー側で自動的に更新されることが多いです。
PHP の各版には、修正を出してもらえる期限があります。 期限が切れた版は、見つかった弱点が直されません。サイトが乗っ取られる危険が上がります。
期限は、版ごとに決まっています。覚える必要はなく、必ず php.net の Supported Versions のページで確かめます。 2026年時点の目安では、7.4 の期限はとうに切れていて、8.3 はまだ安全の修正が出る版です。日付は変わらないものではないので、上げる前に見直してください。
7.4 の頃に書かれたコードを 8.x で動かすと、次の4つで問題が出やすくなります。 AIがPHPの版上げの変更を出してきた時は、この4つが直されているかを見ます。
存在しない名前で、配列の値を取り出そうとすることです。
$name = $data['name']; // 'name' が入っていない時
7.4 では軽い注意で済んでいたのが、8.0 から警告になりました。 警告が画面に出ると、ページの崩れや、真っ白になる原因にもなります。
直し方は、No.04 で見た isset で、あるかを確かめてから取り出す形です。 AIの変更で、この書き方が増えていたら、isset が付いているかを見ます。
文字を扱う関数に、null(「何も入っていない」を表す値)を渡すと、8.1 から非推奨の警告が出ます。 非推奨は「今は動くが、将来使えなくなる」という意味です。
strlen($title); // $title が null の時
投稿のタイトルや説明文など、空かもしれない値が入る所で出ます。 直し方は、先に空でないかを確かめるか、空の文字を代わりに使う形です。
クラス(データと動きをまとめた入れ物)に、あらかじめ宣言していない名前の値を、あとから足すことです。 8.2 から非推奨になりました。
自分で書いたコードより、古いプラグインやテーマに多く出ます。 自分で直すのではなく、まず「新しい版が出ていないか」を調べるのが先です。
自分のコードより、更新が止まったプラグインやテーマが一番の原因になります。 作者が新しい PHP に対応していなければ、こちらでは直せません。
確かめ方は、第2章の「必要な PHP のバージョン」です。
次の4つを、上げる前にやります。
php -l ファイル名 と打つと「No syntax errors detected」と返れば文法は通っています。ただし、上の4つのような「動かして初めて出る問題」は見つけられませんAIに頼む時は、「この4つを私の代わりに調べて、結果を表で出して」と頼むのも手です。 ただし、サイトヘルスの画面は自分の目でも見てください。
Xserver などのレンタルサーバーでは、サーバーパネルの中に PHP の版を選ぶ項目があり、ドメインごとに切り替えられます。 大まかな流れは次のとおりです。
全ドメインを一度に切り替えないことが大事です。 複数のサイトを運用していると、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年時点の目安。