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 を有効にして、警告をすべて出す。本番では画面に出さず、ログで確かめる。
移行の手順
- サイトのファイルとデータベースを、まるごとバックアップする
- 上の変更に当てはまる書き方がないか調べる
- テスト環境で新しい PHP に切り替えて試す
- 本番を切り替え、トップ・フォーム・管理画面を確かめる
- おかしければ、すぐ元の版に戻す
よくある質問
7.4 から 8.4 に一気に上げてもいい?
できるが、7.4→8.0・8.0→8.1・8.3→8.4 の変更すべてに当てはまる。テスト環境で警告をすべて出して確かめる。
`create_function()` は何に置き換える?
無名関数(function () { ... })に置き換える。
参考にした情報
- php.net(2026年10月21日のセキュリティ告知)
- php.net:Supported Versions
- php.net:Unsupported Branches
- php.net:付録(移行ガイド)
この記事の情報
2026年10月22日時点の公開情報にもとづく。最新は php.net と、利用中のサーバー会社の告知を確認すること。
PHP のバージョンとサーバー会社を選ぶだけで、危険度と今やることが分かる。移行の相談もできる。
無料で診断する