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

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

公開
著者
編集部

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

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

この記事の要点
  • create_function()・each() などが削除され、呼ぶとエラー
  • 0 == "foo" が false に変わる
  • 隠れていた警告が大量に出ることがある
  • PHPCompatibility で事前に調べられる

PHP 7.4 から 8.0 で変わること

  • create_function()・each()・money_format()・get_magic_quotes_gpc() などが削除
  • 0 == "foo" が false に(数値と文字列の比較の仕方が変わった)
  • 未定義の定数が、警告ではなくエラーに
  • クラス名と同じ名前のメソッドが、コンストラクタとして扱われない
  • 非 static メソッドを Class::method() の形で呼ぶとエラー
  • implode() の逆順の引数が使えない
  • __autoload() が削除(spl_autoload_register() を使う)
  • PDO の既定のエラーモードが「例外を投げる」に
  • 既定の error_reporting が E_ALL になり、隠れていた警告が出る

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

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

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

移行の手順

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

よくある質問

7.4 から 8.4 に一気に上げてもいい?

できるが、7.4→8.0・8.0→8.1・8.3→8.4 の変更すべてに当てはまる。テスト環境で警告をすべて出して確かめる。

`create_function()` は何に置き換える?

無名関数(function () { ... })に置き換える。

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

参考にした情報

この記事の情報

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

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

無料で診断する

この記事の著者

編集部