1. 致命的なエラー(Fatal Error)の原因
- 関数の引数の不一致: PHP 8.0以降、定義されている数より多くの引数を関数に渡すとエラーになります。
- 名前付き引数との競合: 変数名がPHPの予約語とぶつかったり、引数の順序が不適切だと停止します。
- 未定義の定数・関数の廃止: 以前のバージョンで「非推奨(Deprecated)」とされていた古い書き方が完全に削除され、エラーを引き起こします。
2. プラグイン・テーマの互換性
- 更新停止中のプラグイン: 長らくメンテナンスされていないプラグインは、PHP 8.x系の厳格な構文チェックに対応できず、サイトを真っ白(ホワイトスクリーン)にします。
- 独自カスタマイズ(functions.php): 過去に自分で記述したコードが古い構文(例:
each()関数の使用など)のままだとエラーになります。
3. 型定義の厳格化
- データの型エラー: PHP 8.3では型の扱いがより厳しくなっています。数値が必要な場所に文字列を渡すと、以前は自動で変換されていましたが、現在は致命的なエラーや警告が出る場合があります。
4. 警告(Warning / Deprecated)の大量発生
- Nullの扱い:
nullを受け入れない関数にnullが渡された際の警告が強化されています。 - 動的プロパティの廃止: クラス内で定義されていないプロパティを勝手に作成して使う書き方が禁止(非推奨)になり、ログが膨れ上がることがあります。
対策のチェックリスト
- WP本体・プラグイン・テーマをすべて最新にする(これが一番の解決策です)。
wp-config.phpでデバッグモードを確認する:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
これで wp-content/debug.log に具体的なエラー箇所が出力されます。
