WordPressでサイトを運営していると、サーバー側でPHPのバージョンを更新した際に「致命的エラー(Fatal Error)」が発生し、サイトが真っ白になって表示されなくなることがあります。
これは古いテーマやプラグインが新しいPHPに対応していないことが主な原因です。
この記事では、PHP更新後にWordPressが表示されなくなったときの原因と復旧手順をわかりやすく解説します。
よくある原因
-
プラグインの非互換性
古いプラグインがPHPの新しい構文に対応しておらず、エラーを引き起こす。
-
テーマのコードが古い
独自テーマや更新が止まっているテーマが最新PHPで動作しない。
-
キャッシュや.htaccessの問題
PHP切替直後にキャッシュが残っていたり、設定ファイルが古い記述を持っている場合。
復旧のためのステップ
1. エラーメッセージを確認する
-
サイトは真っ白でも、サーバーログ(error_log)やWordPressのデバッグモードで原因を確認できます。
-
wp-config.php に以下を追加するとエラー内容が記録されます。
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
2. プラグインを停止する
3. テーマを切り替える
4. PHPバージョンを一時的に戻す
5. 最新バージョンへの対応
再発防止のポイント
まとめ
PHPアップデート後にWordPressが「真っ白」になった場合、慌てずに以下の流れで対応しましょう。
-
エラーログやデバッグモードで原因を確認
-
プラグインやテーマを無効化して切り分け
-
必要に応じてPHPを一時的に戻す
-
プラグイン・テーマを更新して再度挑戦
この手順を踏めば、多くのケースで復旧が可能です。
「真っ白画面」は焦りますが、落ち着いて対応すれば必ず解決できます。
PHP7.4.33 は 2022年11月に 公式サポートが終了 (EOL) しており、セキュリティ更新も提供されません。
一方で、PHP8系は活発に開発が続けられており、最新の PHP8.3 ではパフォーマンス改善や新機能追加が進んでいます。
本記事では、PHP7.4.33からPHP8.3へ移行する際のポイントを 互換性・新機能・対応策 の3つの観点から整理し、具体的な修正例も比較表で紹介します。
WordPressなどで作成してるようなサイトだとついつい後回しになりがちなので注意しましょう。
1. 互換性のポイント
主な変更点
2. PHP7.4 → PHP8.3 修正例(比較表)
| 項目 | PHP7.4での書き方 | PHP8.3での修正例 | エラー内容(PHP8.3) |
| 動的プロパティ | class User { }
$u = new User();
$u->name = "Alice"; // OK | class User { public string $name; }
$u = new User();
$u->name = "Alice"; // OK | Deprecated: Creation of dynamic property User::$name is deprecated |
| 未定義配列キー | $arr = [];
echo $arr["key"]; // Warning | $arr = [];
echo $arr["key"] ?? null; // Notice回避 | Warning: Undefined array key "key" |
| create_functionの廃止 | $f = create_function('$x', 'return $x * 2;');
echo $f(3); | $f = fn($x) => $x * 2;
echo $f(3); | Fatal error: Uncaught Error: Call to undefined function create_function() |
| ereg → pregへの移行 | if (ereg("^[a-z]+$", $str)) { ... } | if (preg_match("/^[a-z]+$/", $str)) { ... } | Fatal error: Uncaught Error: Call to undefined function ereg() |
| implodeの引数順 | implode($array, ","); // Warning | implode(",", $array); // 正しい順序 | Deprecated: implode(): Passing glue after array is deprecated |
| 型厳格化 (関数引数) | function add($a, $b) { return $a + $b; }
echo add("1", 2); // 3 (暗黙変換) | function add(int $a, int $b): int { return $a + $b; }
echo add(1, 2); // OK
// 文字列を渡すと TypeError | Fatal error: Uncaught TypeError: add(): Argument #1 ($a) must be of type int, string given |
3. 新機能の注目ポイント(PHP8.0〜8.3)
PHP8.0
-
JITコンパイル導入 → 数割の高速化
-
Union Types
-
Named Arguments
PHP8.1
-
Enums
-
Readonlyプロパティ
-
Fiber
PHP8.2
-
Readonlyクラス
-
Dynamic Properties 廃止
PHP8.3
-
Typed Class Constants
-
json_validate()
-
パフォーマンス改善(クラスロード周り)
4. 移行時の対応ステップ
-
検証環境構築(DockerやXAMPPなどでPHP8.3動作確認)
-
composer update で依存パッケージをPHP8系対応版へ更新
-
Deprecationログ確認(7.4でDeprecatedが出ていれば必ず修正)
-
段階的アップグレード(7.4 → 8.0 → 8.1 → 8.3 が安全)
まとめ
👉 早めにPHP8.3へ移行して、セキュリティ・パフォーマンス・開発効率を改善しましょう。
「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。