PHPの500エラーとは、Webサイトにアクセスした際に表示される 「HTTP 500 Internal Server Error」 のことです。
これは、ユーザー側のブラウザや通信環境ではなく、サーバー側で何らかの問題が発生し、ページを正常に表示できなかった状態を意味します。
PHPサイトでは、PHPファイルの記述ミス、.htaccess の設定ミス、ファイル権限の問題、PHPバージョンの不一致、メモリ不足、WordPressのプラグイン不具合など、さまざまな原因で500エラーが発生します。
500エラーは原因が画面上に詳しく表示されないことが多いため、発生時にはエラーログを確認しながら、原因を一つずつ切り分けることが重要です。
500エラーの基本的な意味
HTTPステータスコードには、Webサーバーがブラウザに対して返す処理結果が含まれています。
代表的なステータスコードには、以下のようなものがあります。
| ステータスコード | 意味 |
|---|---|
| 200 | 正常に表示された |
| 301 / 302 | リダイレクト |
| 403 | アクセスが禁止されている |
| 404 | ページが見つからない |
| 500 | サーバー内部エラー |
| 503 | サーバーが一時的に利用できない |
このうち500エラーは、サーバー内部で予期しない問題が起き、リクエストを処理できなかった場合に返されるエラーです。
PHPサイトの場合、ユーザーがページにアクセスすると、サーバー上でPHPファイルが実行されます。
その処理中に重大なエラーが起きると、サーバーは正常なページを返せず、500エラーを表示します。
ただし、実際にブラウザへ500エラーとして表示されるかどうかは、サーバー設定やPHPのエラー表示設定、CMS・フレームワークの仕様によって異なります。
場合によっては、白い画面だけが表示されたり、PHPのエラーメッセージが表示されたりすることもあります。
PHPで500エラーが起きる主な原因
PHPの500エラーは、原因が1つに限定されるものではありません。
代表的な原因としては、以下が挙げられます。
- PHPの構文エラー
- PHPのFatal error
.htaccessの記述ミス- ファイルやディレクトリの権限ミス
- PHPバージョンの不一致
- メモリ不足
- 処理時間のタイムアウト
- WordPressのテーマやプラグインの不具合
- データベース接続エラー
- Composerやライブラリの読み込みエラー
- サーバー設定の問題
ここからは、それぞれの原因について詳しく解説します。
PHPの構文エラー
セミコロンや括弧の閉じ忘れ
PHPファイル内に文法ミスがあると、500エラーの原因になることがあります。
たとえば、以下のコードはセミコロンが不足しています。
<?php
echo "Hello World"
正しくは以下のように記述します。
<?php
echo "Hello World";
また、括弧の閉じ忘れもよくあるミスです。
<?php
if ($user) {
echo "ログイン中";
この場合、最後に } が不足しています。
正しくは以下です。
<?php
if ($user) {
echo "ログイン中";
}
PHPの構文エラーは、開発環境では画面にエラーメッセージが表示されることがあります。
しかし、本番環境ではセキュリティ上の理由からエラー表示を無効にしているケースが多く、詳細なエラー内容が表示されずに500エラーだけが出ることがあります。
構文チェックには php -l を使う
PHPファイルの構文エラーを確認したい場合は、コマンドラインで以下を実行します。
php -l ファイル名.php
例:
php -l index.php
問題がなければ、以下のように表示されます。
No syntax errors detected in index.php
構文エラーがある場合は、エラーの種類や該当行が表示されます。
ただし、サーバーによっては、コマンドラインで使われるPHPとWebサーバー経由で実行されるPHPのバージョンが異なる場合があります。
そのため、CLI上で問題がなくても、Web上ではエラーになる可能性があります。
PHPのFatal error
未定義の関数やクラスを呼び出している
PHPの文法自体に問題がなくても、実行時に重大なエラーが発生すると500エラーになることがあります。
たとえば、存在しない関数を呼び出した場合です。
<?php
my_custom_function();
my_custom_function() が定義されていない場合、PHPは処理を続けることができず、Fatal errorになります。
また、存在しないクラスを使った場合も同様です。
<?php
$user = new UserService();
UserService クラスが読み込まれていない場合、クラスが見つからないエラーが発生します。
ファイルの読み込み漏れにも注意する
独自PHPサイトやフレームワークでは、必要なファイルの読み込み漏れによって500エラーが発生することがあります。
たとえば、以下のようなケースです。
<?php
require_once 'functions.php';
このとき、functions.php が存在しない、パスが間違っている、権限が不足しているといった問題があると、PHPの実行に失敗します。
LaravelやSymfonyなどのフレームワークでは、名前空間の指定ミス、autoloadの不具合、Composerの依存関係エラーなどが原因になることもあります。
.htaccess の記述ミス
Apache環境ではよくある原因
Apacheサーバーを利用している場合、.htaccess の記述ミスは500エラーの代表的な原因です。
.htaccess は、リダイレクト、URL書き換え、アクセス制御、キャッシュ設定などを行うための設定ファイルです。
たとえば、以下のような記述ミスがあるとエラーになる可能性があります。
RewriteEngine On
RewriteRule ^old-page$ /new-page [R=301,L
この例では、最後の ] が不足しています。
正しくは以下です。
RewriteEngine On
RewriteRule ^old-page$ /new-page [R=301,L]
.htaccess の記述に問題がある場合、PHPファイル自体に問題がなくても500エラーが発生します。
php_value や php_flag の使用に注意する
.htaccess に以下のようなPHP設定を書くと、環境によっては500エラーになることがあります。
php_value memory_limit 256M
昔ながらのApacheモジュール版PHPでは使える場合がありますが、PHP-FPMやCGI/FastCGI環境では、.htaccess から php_value や php_flag を指定できないことがあります。
特にレンタルサーバーでは、PHP設定を変更する方法がサーバーごとに決められています。
たとえば、以下のような方法を使うケースがあります。
- サーバー管理画面から変更する
php.iniを編集する.user.iniを使う- WordPressの
wp-config.phpで一部設定する
.htaccess を編集した直後に500エラーが出た場合は、まず .htaccess の記述ミスを疑いましょう。
ファイルやディレクトリの権限ミス
パーミッションが不適切だと500エラーになることがある
PHPファイルやディレクトリの権限が不適切な場合も、500エラーが発生することがあります。
一般的な目安は以下です。
| 種類 | 一般的な権限 |
|---|---|
| ディレクトリ | 755 |
| PHPファイル | 644 |
| CGIとして実行するファイル | 755が必要な場合あり |
たとえば、PHPファイルの権限が 777 になっていると、サーバーによってはセキュリティ上の理由で実行を拒否し、500エラーになることがあります。
一方で、必要な読み取り権限や実行権限が不足している場合も、PHPファイルを正しく処理できません。
777には安易に設定しない
トラブル対応時に、すべてのファイルやディレクトリを 777 にしてしまうケースがありますが、これは避けるべきです。
777 は、所有者・グループ・その他すべてのユーザーに読み取り、書き込み、実行権限を与える設定です。
一時的に動作するように見える場合もありますが、セキュリティリスクが非常に高くなります。
また、サーバーによっては 777 のファイル実行を拒否し、500エラーの原因になることもあります。
多くのPHPサイトでは、基本的に以下を目安にします。
ディレクトリ:755
ファイル:644
ただし、最適な権限はサーバーの実行ユーザーや所有者設定によって変わります。
レンタルサーバーを利用している場合は、サーバー会社の推奨設定も確認しましょう。
PHPバージョンの不一致
古いコードが新しいPHPで動かないケース
PHPのバージョン変更によって、これまで動いていたサイトが500エラーになることがあります。
たとえば、古いPHPで使われていた関数が新しいPHPで非推奨または削除されていたり、以前は警告で済んでいた処理がFatal errorになる場合があります。
特にPHP 7系からPHP 8系へ変更した際には、互換性の問題が発生することがあります。
WordPressの場合でも、古いテーマや更新が止まっているプラグインが新しいPHPバージョンに対応していないと、500エラーの原因になります。
新しい構文が古いPHPで使えないケース
反対に、新しいPHPの構文を古いPHP環境で使うとエラーになります。
たとえば、以下のようなnull合体演算子は古いPHPでは使えません。
<?php
echo $name ?? 'ゲスト';
サーバー移転やPHPバージョン変更を行った後に500エラーが出た場合は、現在のPHPバージョンとコードの互換性を確認しましょう。
PHPバージョンは、コマンドラインで以下のように確認できます。
php -v
また、PHPファイルに以下を記述して確認する方法もあります。
<?php
phpinfo();
ただし、phpinfo() はサーバー情報を大量に表示するため、確認後は必ず削除してください。
PHPのメモリ不足
メモリ上限を超えると処理が止まる
PHPには、1回の処理で使用できるメモリ上限があります。
大量のデータを処理したり、大きな画像をリサイズしたり、WordPressで重いプラグインを使ったりすると、メモリ不足によって500エラーが発生することがあります。
代表的なエラーは以下です。
Allowed memory size of 134217728 bytes exhausted
この場合、PHPの memory_limit を増やすことで改善する可能性があります。
memory_limit = 256M
WordPressでは、wp-config.php に以下を追加することでメモリ上限を増やせる場合があります。
define('WP_MEMORY_LIMIT', '256M');
設定値を上げるだけでは根本解決にならないこともある
メモリ不足は、単純にメモリ上限が低いだけでなく、コードや処理内容に問題がある場合もあります。
たとえば、以下のようなケースです。
- 無限ループが発生している
- 大量データを一度に読み込んでいる
- 画像処理が重すぎる
- ループ内で大量のデータベースクエリを実行している
- WordPressプラグインが過剰にリソースを使っている
一時的な対処として memory_limit を増やすのは有効ですが、同じエラーが繰り返される場合は、処理内容そのものを見直す必要があります。
処理時間のタイムアウト
PHPの処理が長すぎるとエラーになる
PHPの処理が長時間続くと、サーバー側で処理が打ち切られ、500エラーや504エラーになることがあります。
よくあるケースは以下です。
| ケース | 例 |
|---|---|
| 大量データの一括処理 | CSVインポート、商品データ更新 |
| 外部API通信 | APIの応答が遅い |
| 画像処理 | 大きな画像のリサイズ |
| データベース処理 | 重いSQL、ループ内クエリ |
| バックアップ処理 | WordPressのバックアッププラグイン |
PHPには、最大実行時間を指定する設定があります。
max_execution_time = 30
この場合、PHP処理が30秒を超えると、タイムアウトする可能性があります。
500ではなく502や504になることもある
タイムアウトが原因の場合、必ず500エラーになるとは限りません。
サーバー構成によっては、以下のようなエラーになることもあります。
| エラー | 主な意味 |
|---|---|
| 500 | サーバー内部エラー |
| 502 | 上流サーバーから不正な応答を受け取った |
| 504 | 上流サーバーの応答がタイムアウトした |
特にNginx + PHP-FPMの構成では、PHP-FPMとの通信に問題がある場合、502や504が表示されることもあります。
WordPressで500エラーが起きる主な原因
WordPressサイトでは、PHPの500エラーが比較的よく発生します。
主な原因は以下です。
| 原因 | 内容 |
|---|---|
| プラグインの不具合 | 更新後の互換性エラーなど |
| テーマの不具合 | functions.php の記述ミスなど |
.htaccess の破損 | パーマリンクやリダイレクト設定の問題 |
| PHPバージョン不一致 | 古いテーマ・プラグインが新しいPHPに非対応 |
| メモリ不足 | プラグイン過多や重い処理 |
| WordPress本体更新の失敗 | 一部ファイルの更新失敗など |
プラグインを停止する
WordPressで500エラーが発生し、管理画面にも入れない場合は、プラグインが原因かどうかを切り分けます。
FTPやサーバーのファイルマネージャーで、以下のフォルダ名を変更します。
wp-content/plugins
たとえば、以下のように変更します。
plugins_old
これにより、すべてのプラグインが一時的に無効化されます。
サイトが表示されるようになった場合は、プラグインのいずれかが原因です。
その後、フォルダ名を元に戻し、プラグインを1つずつ有効化して原因を特定します。
ただし、全プラグインを停止すると、問い合わせフォーム、EC機能、会員機能、セキュリティ機能なども一時的に停止する可能性があります。
原因になっていそうなプラグインが分かっている場合は、そのプラグインのフォルダだけをリネームする方法も有効です。
テーマを切り替える
テーマが原因で500エラーが発生することもあります。
特に、functions.php を編集した直後に500エラーが出た場合は、テーマ側のPHPエラーを疑いましょう。
FTPで現在使用中のテーマフォルダ名を変更すると、WordPressがそのテーマを読み込めなくなります。
テーマフォルダは以下にあります。
wp-content/themes/
たとえば、現在のテーマが my-theme の場合、以下のように変更します。
my-theme
を
my-theme_old
にします。
別の有効なテーマが存在すれば、WordPressが別テーマに切り替わる場合があります。
ただし、必ず復旧するとは限りません。
可能であれば、管理画面、WP-CLI、またはデータベースから安全にテーマを切り替える方法も検討しましょう。
.htaccess を再生成する
WordPressでは、.htaccess の破損や記述ミスによって500エラーが発生することがあります。
まず、FTPやファイルマネージャーで以下のファイル名を変更します。
.htaccess
たとえば、以下のように変更します。
.htaccess_old
これでサイトが表示される場合は、.htaccess が原因の可能性があります。
管理画面に入れる場合は、以下の操作で .htaccess を再生成できます。
設定 → パーマリンク → 変更を保存
この操作により、WordPressの基本的なリライトルールが再生成されます。
WordPressでデバッグログを確認する方法
wp-config.php にデバッグ設定を追加する
WordPressで500エラーの原因を調べる場合は、デバッグログを有効にすると原因を特定しやすくなります。
wp-config.php に以下を追加します。
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
この設定により、エラー内容が以下のファイルに記録されます。
wp-content/debug.log
WP_DEBUG_DISPLAY を false にしているため、画面上にはエラーを表示せず、ログにのみ記録できます。
調査後はデバッグ設定を戻す
本番環境でデバッグログを有効にした場合は、調査後に無効化しましょう。
define('WP_DEBUG', false);
また、debug.log にはサーバーパス、SQL、プラグイン名、場合によっては個人情報やAPIキーに関わる情報が記録される可能性があります。
そのため、調査後はログファイルの内容を確認し、必要に応じて削除またはアクセス制限を行うことが大切です。
データベース接続エラー
DB設定の誤りでPHP処理が失敗することがある
PHPサイトでは、MySQLなどのデータベースに接続できない場合にもエラーが発生します。
WordPressの場合は、wp-config.php の以下の設定を確認します。
define('DB_NAME', 'database_name');
define('DB_USER', 'database_user');
define('DB_PASSWORD', 'database_password');
define('DB_HOST', 'localhost');
よくある原因は以下です。
| 原因 | 内容 |
|---|---|
| DB名の間違い | 指定したデータベースが存在しない |
| DBユーザー名の間違い | 接続ユーザーが正しくない |
| DBパスワードの間違い | パスワード変更後に設定を更新していない |
| DBホストの間違い | localhost 以外の指定が必要な場合がある |
| DBサーバー障害 | データベースサーバーが停止している |
WordPressでは専用のエラー画面が出ることもある
WordPressの場合、データベース接続に失敗すると、500エラーではなく「データベース接続確立エラー」と表示されることがあります。
一方、独自PHPサイトやLaravelなどのフレームワークでは、例外処理や本番環境の設定によって500エラーとして表示されることがあります。
そのため、500エラーが出た場合でも、データベース接続に関するログが残っていないか確認しましょう。
Composerやライブラリの不具合
autoloadの不具合で500エラーになることがある
LaravelやComposerを利用しているPHPアプリケーションでは、依存ライブラリの読み込みに失敗すると500エラーが発生することがあります。
たとえば、以下のような原因が考えられます。
vendorディレクトリが存在しないvendor/autoload.phpが読み込めない- Composerの依存関係が壊れている
- クラス名や名前空間が間違っている
- 本番環境に必要なライブラリがインストールされていない
クラスが見つからない場合は、以下のコマンドでautoloadを再生成すると改善することがあります。
composer dump-autoload
本番環境での composer update には注意する
Composer関連のトラブル対応では、以下のようなコマンドが使われることがあります。
composer install
composer dump-autoload
本番環境では、composer.lock に基づいて依存関係をインストールする以下のコマンドが一般的です。
composer install --no-dev
一方で、以下のコマンドには注意が必要です。
composer update
composer update は依存パッケージのバージョンを更新するため、予期しない互換性問題を引き起こす可能性があります。
本番環境で安易に実行するのではなく、開発環境や検証環境で確認してから反映するのが安全です。
500エラーが出たときの確認手順
500エラーが発生した場合は、闇雲に修正するのではなく、順番に原因を切り分けることが重要です。
直前に変更した内容を確認する
まず、エラーが発生する直前に何を変更したかを確認します。
| 直前の作業 | 疑うべき原因 |
|---|---|
| PHPファイルを編集した | 構文エラー、関数ミス |
.htaccess を編集した | RewriteRuleやPHP設定のミス |
| WordPressプラグインを更新した | プラグインの互換性エラー |
| WordPressテーマを編集した | functions.php の記述ミス |
| PHPバージョンを変更した | 互換性エラー |
| サーバー移転をした | パス、権限、DB設定ミス |
| SSL化した | リダイレクト設定ミス |
| Composerを更新した | 依存関係エラー |
500エラーは、直前に行った作業が原因になっていることが多いです。
まずは変更前の状態に戻せるか確認しましょう。
エラーログを確認する
500エラーの原因特定で最も重要なのが、エラーログの確認です。
レンタルサーバーの場合、管理画面に以下のような項目が用意されていることがあります。
- エラーログ
- アクセスログ
- サーバーログ
- PHPエラーログ
VPSや専用サーバーでは、以下のような場所にログがあることが多いです。
Apacheの場合:
/var/log/apache2/error.log
または、
/var/log/httpd/error_log
Nginxの場合:
/var/log/nginx/error.log
PHP-FPMの場合:
/var/log/php-fpm/www-error.log
ログには、以下のような情報が記録されます。
PHP Fatal error: Uncaught Error: Call to undefined function sample_function()
この場合、未定義の関数を呼び出していることが原因です。
PHP Parse error: syntax error, unexpected token
この場合、PHPの構文エラーが原因です。
AH00526: Syntax error on line 12 of /path/to/.htaccess
この場合、.htaccess の12行目に問題があります。
.htaccess を一時的に無効化する
Apache環境で原因が分からない場合は、.htaccess を一時的に無効化して確認します。
.htaccess
を以下のように変更します。
.htaccess_bak
これでサイトが表示されるようになれば、.htaccess が原因の可能性が高いです。
WordPressの場合は、管理画面に入れるようになった後で、パーマリンク設定から .htaccess を再生成しましょう。
ファイル権限を確認する
FTPやサーバー管理画面で、ファイルやディレクトリの権限を確認します。
基本的な目安は以下です。
ディレクトリ:755
ファイル:644
ただし、サーバー環境によって適切な設定は異なります。
特に以下のような状態には注意しましょう。
- PHPファイルが
777になっている - ディレクトリに必要な実行権限がない
- ファイル所有者がサーバー実行ユーザーと合っていない
- アップロード後に権限が変わっている
PHPバージョンを確認する
PHPバージョンの変更後に500エラーが出た場合は、現在のPHPバージョンを確認します。
php -v
WordPressの場合は、以下も確認しましょう。
- WordPress本体の対応バージョン
- 使用テーマのPHP対応状況
- 使用プラグインのPHP対応状況
- 更新停止しているプラグインの有無
PHP 8系では、古いコードがエラーになるケースもあるため、古いテーマやプラグインを利用しているサイトでは特に注意が必要です。
メモリ不足やタイムアウトを確認する
エラーログに以下のような記録がある場合は、メモリ不足が疑われます。
Allowed memory size exhausted
また、以下のような記録がある場合は、処理時間の超過が疑われます。
Maximum execution time exceeded
この場合、設定値を見直すだけでなく、重い処理の内容も確認しましょう。
よくあるエラーログと原因
500エラーの原因は、エラーログを見ることでかなり絞り込めます。
| ログの内容 | 主な原因 |
|---|---|
PHP Parse error | PHPの構文ミス |
PHP Fatal error | 致命的エラー |
Call to undefined function | 関数が定義されていない |
Class not found | クラスの読み込み失敗 |
Allowed memory size exhausted | メモリ不足 |
Maximum execution time exceeded | 処理時間超過 |
Permission denied | 権限不足 |
.htaccess: Invalid command | .htaccess の記述ミス |
No such file or directory | ファイルパスの間違い |
Connection refused | DBや外部サービスへの接続失敗 |
ブラウザ上に表示される500エラーだけでは、原因を正確に判断することはできません。
必ずサーバー側のログを確認しましょう。
500エラーと似たエラーの違い
500エラーと似たエラーには、403、404、502、503、504などがあります。
それぞれ原因が異なるため、混同しないようにしましょう。
403 Forbidden
403は、アクセスが禁止されている場合に表示されます。
主な原因は以下です。
- ファイルやディレクトリの権限不足
- IP制限
- Basic認証の設定ミス
- WAFによるブロック
- indexファイルが存在しない
- サーバー設定でアクセスが拒否されている
404 Not Found
404は、ページやファイルが見つからない場合に表示されます。
主な原因は以下です。
- URLが間違っている
- ファイルが存在しない
- WordPressのパーマリンク設定ミス
- リダイレクト設定ミス
- 削除済みページにアクセスしている
502 Bad Gateway
502は、ゲートウェイやプロキシが上流サーバーから正しい応答を受け取れなかった場合に表示されます。
Nginx + PHP-FPM構成で、PHP-FPMが停止している場合などに発生することがあります。
503 Service Unavailable
503は、サーバーが一時的に利用できない場合に表示されます。
主な原因は以下です。
- サーバー高負荷
- メンテナンス中
- アクセス過多
- リソース制限
- WordPressのメンテナンスファイル残存
WordPress更新中に失敗すると、以下のファイルが残って503になることがあります。
.maintenance
504 Gateway Timeout
504は、上流サーバーからの応答が時間内に返ってこなかった場合に表示されます。
重いPHP処理、外部APIの応答遅延、データベース処理の遅延などが原因になることがあります。
PHPの500エラーを防ぐための対策
500エラーは、日頃の運用である程度防ぐことができます。
本番環境で直接編集しない
本番サイトのPHPファイルやWordPressの functions.php を直接編集すると、少しのミスでサイト全体が500エラーになることがあります。
安全に作業するには、以下の流れが理想です。
ローカル環境で編集
↓
テスト環境で確認
↓
本番環境へ反映
特にWordPressの functions.php は、構文ミスがあると管理画面にも入れなくなる可能性があります。
変更前にバックアップを取る
PHPファイル、.htaccess、テーマ、プラグイン、データベースは、変更前にバックアップを取っておきましょう。
最低限、以下はバックアップしておくと安心です。
index.php
.htaccess
wp-config.php
functions.php
wp-content/themes/
wp-content/plugins/
データベース
バックアップがあれば、500エラーが発生しても変更前の状態に戻しやすくなります。
PHPバージョン変更前に互換性を確認する
PHPバージョンを変更する前に、使用しているCMS、テーマ、プラグイン、ライブラリが対応しているか確認しましょう。
特にWordPressでは、以下を確認することが重要です。
- WordPress本体が新しいPHPに対応しているか
- 使用中のテーマが対応しているか
- 使用中のプラグインが対応しているか
- 更新停止しているプラグインがないか
- 独自カスタマイズ部分が古いPHPコードになっていないか
PHPバージョン変更は、できればテスト環境で確認してから本番に反映しましょう。
エラーログを定期的に確認する
500エラーとして表面化していなくても、サーバー内部ではPHP WarningやDeprecatedが発生している場合があります。
軽微な警告を放置すると、PHPバージョンアップ時に重大なエラーへ変わることがあります。
定期的にログを確認し、小さなエラーのうちに修正しておくことが大切です。
不要なプラグインや古いコードを整理する
WordPressでは、プラグインが増えすぎると、500エラーのリスクも高くなります。
以下のようなプラグインは見直しましょう。
- 使っていないプラグイン
- 長期間更新されていないプラグイン
- PHP 8系に対応していないプラグイン
- 同じ機能を重複して持つプラグイン
- エラーや警告を頻繁に出しているプラグイン
独自PHPサイトでも、古いライブラリや不要なコードは定期的に整理することが重要です。
500エラー発生時の応急処置
サイトが突然500エラーになった場合は、まず復旧を優先します。
WordPressの場合
WordPressで500エラーが発生した場合は、以下の順番で確認します。
1. 直前に更新・編集した内容を確認する
2. wp-content/plugins をリネームしてプラグインを停止する
3. 使用中テーマのフォルダ名を変更する
4. .htaccess を一時的に無効化する
5. wp-config.php でデバッグログを有効化する
6. PHPバージョンを変更前に戻す
7. サーバーのエラーログを確認する
特に、プラグイン更新直後に500エラーが出た場合は、プラグインが原因である可能性が高いです。
独自PHPサイトの場合
独自PHPサイトで500エラーが発生した場合は、以下を確認します。
1. 直前に編集したPHPファイルを戻す
2. php -l で構文チェックを行う
3. .htaccess を一時的に無効化する
4. サーバーのエラーログを確認する
5. ファイルやディレクトリの権限を確認する
6. PHPバージョンを確認する
7. Composer利用サイトなら dump-autoload を実行する
8. DB接続や外部APIの接続状況を確認する
最初からすべてを変更するのではなく、1つずつ確認しながら原因を切り分けましょう。
まとめ
PHPの500エラーは、サーバー側でPHP処理や設定に問題が発生し、ページを正常に表示できない状態です。
主な原因としては、以下が挙げられます。
- PHPの構文エラー
- Fatal error
.htaccessの記述ミス- ファイル権限の問題
- PHPバージョンの不一致
- メモリ不足
- 処理時間のタイムアウト
- WordPressのプラグインやテーマの不具合
- データベース接続エラー
- Composerやライブラリの不具合
500エラーは、ブラウザ上の表示だけでは原因を判断しにくいエラーです。
そのため、発生時にはまず以下を確認しましょう。
1. 直前に何を変更したか
2. エラーログに何が記録されているか
3. .htaccess、PHP構文、ファイル権限に問題がないか
4. WordPressならプラグイン・テーマ・デバッグログを確認する
特に重要なのは、エラーログを確認することです。
500エラーは一見すると原因が分かりにくいですが、ログには「どのファイルの何行目で何が起きたか」が記録されていることがあります。
PHPの500エラーに対応する際は、焦って設定を大きく変更するのではなく、ログを確認しながら原因を一つずつ切り分けることが、最も確実な解決方法です。
以上、PHPの500エラーについてでした。
最後までお読みいただき、ありがとうございました。









