PHP7.4 → PHP8.x へのバージョンアップ後、サーバーの error.log に見たことのないWarningやFatal Errorが大量に出るようになった──という経験をした方も多いと思います。

PHP8での最大の変化は、「これまで見て見ぬふりをしていたものを、きちんとエラーにするようになった」という点です。PHP7.xでは「ちょっとおかしいけど動く」コードが、PHP8.xでは「おかしいのできちんと止める」になりました。

この記事では、「まず何を確認して、どう対処するか」の流れを説明します。


    なぜPHP8にするとエラーが増えるのか

    ① 未定義の変数・配列キーが NoticeWarning に格上げ

    PHP7.xまでは「未定義の変数を使った」「存在しない配列のキーにアクセスした」という操作は Notice(通知)でした。画面には何も出ず、ログにもさほど残らないケースが多かったです。

    PHP8.0以降はこれが Warning(警告)に格上げされ、エラーログにきっちり記録されるようになりました。

    bool 型へのインクリメントが非推奨に

    get_post_meta() など、失敗時に false を返す関数の戻り値に対して $value++ をすると、PHP8.3以降で Deprecated: Increment on type bool という警告が出ます。PHP7.xでは何も言われなかったコードです。

    ③ 型チェックが厳密になり、場合によってFatal Errorに

    PHP7.xでは「文字列を渡すべき関数に配列を渡しても暗黙的に変換して動く」ケースがありました。PHP8.xではこれが Fatal Error(プログラムが停止するエラー)になることがあります。


    エラーログの読み方

    error.logの各行は次のような形式になっています。

    [17-Mar-2026 12:34:56 UTC] PHP Warning: Undefined array key "post" in /home/user/public_html/wp-content/themes/mytheme/functions.php on line 976
    
    項目 内容
    PHP Warning エラーの種別(Warning / Fatal error / Deprecated など)
    Undefined array key "post" エラーの内容
    functions.php on line 976 ファイル名と行番号

    まずエラーの種別を確認します。

    • Fatal error → プログラムが停止。最優先で対処
    • Warning → 動いているが問題あり。順次対処
    • Deprecated → 将来のバージョンで削除予定。対処推奨
    • Notice → 軽微な問題。余裕があれば対処

    よく発生するエラーと対処法

    ① よく出るWarning

    • $post->post_name on null
    • get_post_meta() の戻り値に ++ をしたときの bool increment
    • foreach() に null を渡したときのWarning
    • $_GET['post'] など存在しない配列キーへのアクセス
    • if-elseif-else の全分岐で変数が定義されていない問題
    PHP8移行でWordPressテーマに出るWarning 5パターンと修正コード【実例付き】 PHP7→PHP8への移行後にWordPressテーマで実際に発生したPHP Warning 5種類を、before/afterのコード付きで解説。$postのnullチェック・get_post_meta()のfalse対応・foreachのnull引数・$_...  続きを読む

    ② Fatal Errorとエラーの連鎖

    • get_page_by_path() に配列を渡してFatal Error(PHP8の型厳格化)
    • ファイルのinclude失敗がsession_startエラーを引き起こす連鎖構造
    • テーマ複製時に起きやすい「更新漏れ」チェックリスト
    WordPressテーマのFatal Errorとエラーの連鎖構造を直す【PHP7→PHP8移行】 PHP8移行後にWordPressが真っ白になるFatal Errorの原因と修正方法を実例で解説。get_page_by_path()への配列渡し問題、includeの失敗がsession_startエラーを引き起こす連鎖構造のしくみ、テーマ複製時に起きやす...  続きを読む