緊急PHP2Shell(CVE-2026-109618 / 109619)公表から1日。PHP 8.1 以前は修正版なし今すぐ診断
  1. ホーム
  2. ブログ
  3. 移行の手順

PHP 8.3 から 8.4 で動かなくなる主な変更|移行前のチェック

公開
著者
編集部

PHP 8.3 から 8.4 へ上げると動かなくなりやすい変更を、php.net の移行ガイドから抜き出した。確認のしかたと手順つき。

PHP 8.3 から 8.4 へ上げると、古いプラグインや古い書き方のプログラムが動かなくなることがある。php.net の移行ガイドから、実際のサイトで問題になりやすいものだけを抜き出した。

この記事の要点
  • E_STRICT の定数が非推奨
  • 一部の拡張で is_resource() の判定が効かない
  • OPcache の JIT の既定値が変わった
  • PHPCompatibility で事前に調べられる

PHP 8.3 から 8.4 で変わること

  • E_STRICT の定数が非推奨
  • DBA・ODBC・SOAP の一部で is_resource() の判定が効かない
  • round() に無効な mode を渡すと ValueError
  • OPcache の JIT の既定値が変わった(opcache.jit を明示する)
  • str_getcsv() の区切り文字などの長さの確認が厳しくなった

動かなくなっていないか調べる方法

方法やること
機械で調べるPHPCompatibility(PHP_CodeSniffer のルール)でプログラムを調べる
テスト環境で動かす新しい PHP で動かし、エラーと警告をすべて出して確かめる
WordPress本体・プラグイン・テーマを最新にしてから試す
警告は先に見ておく

テスト環境では error_reporting(E_ALL) と display_errors を有効にして、警告をすべて出す。本番では画面に出さず、ログで確かめる。

移行の手順

  1. サイトのファイルとデータベースを、まるごとバックアップする
  2. 上の変更に当てはまる書き方がないか調べる
  3. テスト環境で新しい PHP に切り替えて試す
  4. 本番を切り替え、トップ・フォーム・管理画面を確かめる
  5. おかしければ、すぐ元の版に戻す

よくある質問

8.3 から 8.4 は大きな変更がある?

7.4→8.0 ほど大きくはない。ただし E_STRICT や OPcache の JIT の設定など、設定ファイル側の見直しが必要なことがある。

JIT を使っていたが、8.4 で効かなくなった

8.4 から既定値が opcache.jit=disable に変わった。JIT を使うなら opcache.jit を明示して設定する。

無料ツールPHP2Shell 脆弱性チェッカーPHP のバージョンとサーバー会社を選ぶだけで、危険度と今やることが分かります。

参考にした情報

この記事の情報

2026年10月22日時点の公開情報にもとづく。最新は php.net と、利用中のサーバー会社の告知を確認すること。

PHP のバージョンとサーバー会社を選ぶだけで、危険度と今やることが分かる。移行の相談もできる。

無料で診断する

この記事の著者

編集部