WordPressを運営していると、サーバーのPHPバージョンを新しいものへ変更する機会があります。
私のサイトでも、PHP 7.4.33からPHP 8.3へ変更したところ、突然「500 Internal Server Error」が発生し、サイトが正常に表示されなくなりました。
最初はプラグインやテーマとの互換性を疑いましたが、最終的な原因は、wp-config.phpにあった単純なスペルミスでした。
この記事では、今回発生したエラーの原因と、実際に行った切り分け・解決方法をまとめます。
先に結論
今回の500エラーの原因は、wp-config.phpに記述していた
fales
というスペルミスでした。
正しくは、
false
です。
PHP 7.4では問題が表面化しなかった記述が、PHP 8.3へ変更したことで致命的なエラーとして扱われ、500 Internal Server Errorにつながりました。
つまり今回のケースでは、
PHP 8.3そのものが原因だったのではなく、PHP 8.3への変更によって、それまで潜んでいた記述ミスが問題として表面化した
ということになります。
今回の環境
エラーが発生したときの環境は以下のとおりです。
- WordPress:6.7.1
- PHP 7.4.33 → PHP 8.3
- Webサーバー:Apache
- 実行方式:CGI / FCGI
- PHP 7.4.33では正常動作
- PHP 8.3へ変更すると500 Internal Server Error
PHP 8.3へ変更した直後から、サイトが正常に表示されなくなりました。
最初はプラグインやテーマを疑った
PHPのバージョンアップでWordPressにエラーが発生した場合、まず疑うのはプラグインやテーマです。
そこで、以下のような切り分けを行いました。
プラグインを無効化
インストールしているプラグインをすべて無効化して確認しました。
しかし、PHP 8.3では500エラーが発生しました。
テーマを変更
使用していたテーマにも原因がある可能性があるため、テーマを変更して確認しました。
こちらも改善しませんでした。
.htaccessを確認
キャッシュなどに関係する.htaccessの設定も確認しました。
しかし、これでも500エラーは解消しませんでした。
この時点で、
「プラグインやテーマではなく、WordPress本体やPHP、設定ファイルなどに原因があるのでは?」
と考えました。
サーバーのエラーログを確認
500 Internal Server Errorは、ブラウザに表示されるだけでは原因が分からないことがあります。
その場合は、サーバー側のエラーログを確認することが重要です。
今回もサーバーのエラーログを確認したところ、原因を特定できるエラーメッセージが出ていました。
Fatal error: Uncaught Error: Undefined constant "fales"
ポイントは、
Undefined constant "fales"
という部分です。
falesという定数が存在しない、とPHPがエラーを出しています。
原因は「fales」というスペルミスだった
調べてみると、wp-config.phpの記述に以下のようなスペルミスがありました。
define( 'WP_DEBUG', fales );
正しくは、
define( 'WP_DEBUG', false );
です。
つまり、
fales
↓
false
という、単純なタイプミスでした。
この記述を修正して保存し、サイトを再読み込みしたところ、500エラーは解消しました。
なぜPHP 7.4では問題にならなかったのか?
ここが今回のトラブルで少し分かりにくかったところです。
PHPのバージョンアップでは、古いバージョンで動作していたコードが、新しいPHPではエラーになる場合があります。
今回も、
PHP 7.4では問題が表面化しなかった記述が、PHP 8.3では致命的なエラーになりました。
そのため、
「PHP 8.3にしたらサイトが壊れた」
ように見えました。
しかし、実際にはPHP 8.3そのものが原因だったわけではありません。
今回のケースでは、wp-config.phpにあった記述ミスが原因でした。
WordPressのPHPを変更して500エラーが出たときの確認ポイント
今回の経験から、PHPのバージョンアップ後に500エラーが発生した場合は、次の順番で確認するとよいと思います。
1.まず元のPHPバージョンに戻す
サイトを復旧させる必要がある場合は、いったん以前のPHPバージョンに戻します。
ただし、古いPHPを長期間使い続けることを目的にするのではなく、原因を調査するための一時的な対応と考えた方がよいでしょう。
2.サーバーのエラーログを確認する
500エラーは「サーバー側で何らかのエラーが発生した」という結果しか分からないため、エラーログを見ることが重要です。
今回も、
Fatal error: Uncaught Error: Undefined constant "fales"
というログが原因特定の決め手になりました。
3.プラグインを無効化する
PHPのバージョンアップで問題が起きた場合、古いプラグインが新しいPHPに対応していない可能性があります。
プラグインを無効化して改善するか確認します。
4.テーマを変更する
テーマ側のPHPコードが原因の場合もあります。
一時的に標準テーマへ変更して確認します。
5.wp-config.phpを確認する
今回の私のケースでは、ここが原因でした。
特に、
truefalse- 定数
- PHPコード
- デバッグ設定
などを変更したことがある場合は、記述ミスがないか確認してみる価値があります。
6.PHPのバージョンを確認する
WordPressではPHPの新しいバージョンへの対応が進んでいます。
現在のWordPress公式情報では、PHP 8.3以上が推奨されています。また、WordPress 6.8以降ではPHP 8.4、WordPress 6.4以降ではPHP 8.3が完全サポートされています。
一方で、PHP自体にもサポート期限があります。
2026年9月現在、PHP 8.3・8.4・8.5はサポート対象ですが、PHP 8.2のセキュリティサポートは2026年12月31日までとなっています。
そのため、WordPressだけでなく、利用しているレンタルサーバーやテーマ、プラグインの対応状況も確認しながらPHPを更新することが大切です。
PHPのバージョンアップは怖い?
今回の経験からすると、
「PHP 8にしたらWordPressが壊れる」と考えるより、PHPのバージョンアップをきっかけに、古いコードや設定ミスが問題として発見される可能性がある
と考えた方がよさそうです。
実際、WordPress公式もPHPを最新のサポート対象バージョンへ更新することを推奨しています。PHPを最新に保つことは、セキュリティやパフォーマンスの面でも重要です。
もちろん、PHPの変更前には、
- WordPress本体を更新する
- テーマを更新する
- プラグインを更新する
- バックアップを取る
- PHP変更後にサイトを確認する
といった準備をしておくと安心です。
まとめ
今回、PHP 7.4.33からPHP 8.3へ変更したところ、WordPressで500 Internal Server Errorが発生しました。
プラグインやテーマを無効化しても改善しませんでしたが、サーバーのエラーログを確認したことで原因を特定できました。
原因は、
fales
という単純なスペルミスでした。
正しくは、
false
です。
今回の経験から、PHPのバージョンアップ後に500エラーが発生した場合は、
「PHP 8.3が悪い」と決めつけず、まずエラーログを確認する
ことが重要だと分かりました。
WordPressのPHPを更新して500エラーが出てしまった方は、プラグインやテーマだけでなく、wp-config.phpなどの設定ファイルも確認してみてください。