WordPressでphp7から8でエラー500が起きたときの解決策

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を確認する

今回の私のケースでは、ここが原因でした。

特に、

  • true
  • false
  • 定数
  • 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などの設定ファイルも確認してみてください。

コメントする