WordPress の 500 Internal Server Error を修正する方法

WordPress の 500 Internal Server Error は、何が問題だったのかについての情報がまったく得られないため、最も厄介なエラーの一つです。どのページにも表示される可能性があり、サイトを完全にオフラインにし、数時間以上放置すると検索順位にも影響を与えることがあります。

WP STAGING をダウンロードして、将来このエラーや他のエラーを回避しましょう。WP STAGING プラグインを使用すると、WordPress サイトのコピーを数秒で作成できます。そのステージングサイト上の安全な環境で、新しいプラグイン、デザイン、その他の更新をテストできます。

要点: WordPress の 500 エラーで最もよく使われる 5 つの対処法は、(1) デバッグモードを有効にしてエラーログを読む、(2) .htaccess ファイルを確認して再生成する、(3) PHP のメモリ制限を引き上げる、(4) すべてのプラグインを無効化して 1 つずつ再有効化する、(5) WordPress のコアファイルを再インストールする、です。どの対処法を適用すべきかを把握するために、まずデバッグモードから始めてください。

WordPress の 500 Internal Server Error とは何か

500 ステータスコードは、サーバーが「何かがうまくいかなかった」ことを伝える一般的な方法です。ブラウザがページをリクエストすると、サーバーはそのページを構築するために PHP コードを実行します。適切なレスポンスが形成される前にその処理のどこかで失敗すると、サーバーはページそのものではなく HTTP 500 を返します。

エラーは次のように表示されることがあります。

Error-500

あるいは次のように表示されることもあります。

Error 500 - Internal Server Error

重要な特徴は、このエラーが一般的なものであるという点です。リクエストが失敗したことは伝えますが、その理由は伝えません。これが、404(ページが見つかりません)や 403(アクセスが拒否されました)のようなより具体的なエラーよりも修正が難しい理由です。このガイドの残りの部分では、最も一般的な原因を体系的にたどる道筋を示します。

WordPress で 500 エラーが発生する原因

最も一般的な原因は次のとおりです。

  • 破損または不正な形式の .htaccess ファイル
  • PHP のメモリ不足
  • 致命的な PHP エラーを引き起こすプラグインまたはテーマの競合
  • 破損した WordPress のコアファイル
  • サーバーレベルの障害(PHP-FPM のクラッシュ、設定ミス、ファイル権限)

下の表を使って、ご自身の状況を最も可能性の高い原因と最も早い最初の対処法に対応させてください。

500 エラーはいつ発生しましたか 範囲 最も可能性の高い原因 最初に試す対処法
プラグインのインストールまたは更新後 サイト全体 プラグインの競合 対処法 4: すべてのプラグインを無効化する
wp-config.php または .htaccess の編集後 サイト全体 設定ファイルの構文エラー 対処法 2: .htaccess を再生成する
WordPress コアの更新後 サイト全体 破損したコアファイル 対処法 5: コアファイルを再インストールする
最近の変更なし、サイト全体がダウン サイト全体 メモリ不足 対処法 3: PHP のメモリ制限を引き上げる
最近の変更なし、単一ページに影響 1 ページのみ パーマリンクまたは mod_rewrite の問題 対処法 2: .htaccess を再生成する
wp-admin にまったくアクセスできない サイト全体 原因不明 対処法 1: まずデバッグモードを有効にする

最初に試すべき簡単なチェック

ファイルに手を付ける前に、この 2 つの手早い手順を実行してください。どちらも、古いキャッシュが原因の 500 エラーを解決できる可能性があります。

ページを強制的に再読み込みする: Windows では Ctrl + F5、Mac では Cmd + Shift + R を押して、キャッシュされたバージョンをバイパスし、ページの最新のコピーを読み込みます。

ブラウザのキャッシュをクリアする: ブラウザのキャッシュをクリアすると、サーバーファイルを変更する前に、クライアント側のキャッシュの問題を除外できます。

  1. Google Chrome: Ctrl + Shift + Delete を押し、任意の期間を選択して「データを削除」をクリックします。
ブラウザキャッシュをクリア
  1. Mozilla Firefox: Ctrl + Shift + Delete を押し、適切な期間を選択して「今すぐ消去」をクリックします。
Firefox ブラウザキャッシュをクリア
  1. Apple Safari: Command + Option + E を押すと、キャッシュをすぐにクリアできます。
  2. Microsoft Edge: Ctrl + Shift + Delete を押し、「キャッシュされた画像とファイル」にチェックを入れて「今すぐクリア」をクリックします。

キャッシュをクリアした後にエラーが消えれば、それで完了です。まだ発生する場合は、下の番号付きの対処法に進んでください。

以下の手順はより複雑で、WordPress サイトのデータベース/ファイルに影響します。これ以上の損害を引き起こさないようにするため、また WordPress ダッシュボードへのアクセスがまだある場合は、WP STAGING でステージングサイトを作成し、本番サイトではなくステージングページでエラーの修正を試みてください。

WP STAGING を使えば、本番サイトに適用する前に、ステージングサイトを作成して各対処法を安全にテストできます。

対処法 1: WordPress のデバッグモードを有効にする

最も安全な最初のステップは、WordPress のデバッグログを有効にして、500 レスポンスを引き起こした正確なエラーを読むことです。ログがなければ、以降のすべての対処法は当て推量になります。WP STAGING のサポートチケットで最初の原因として最も多く見られるのはプラグインの競合であり、デバッグログはそれをすぐに明らかにします。

wp-config.php ファイル(WordPress インストールのルートにあり、FTP またはホスティングのファイルマネージャーからアクセスできます)を開き、次の 3 行を追加します。

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
wp-config ファイルを編集

WordPress のデバッグログを有効にする手順の詳しい解説については、こちらの記事をご覧ください。

デバッグログは /wp-content/debug.log に書き込まれます。ファイルを開き、先頭付近にある最初のエラーを探してください。ログが特定のプラグインを指している場合は、そのプラグインのフォルダー名を変更して無効化します。たとえば、/wp-content/plugins/woocommerce/wp-content/plugins/woocommerce-disabled に変更します。

デバッグログが空の場合は、サーバーレベルのエラーログを確認してください。

  • Apache: /var/log/apache2/error.log
  • Nginx: /var/log/nginx/error.log

これらには FTP またはホスティングのコントロールパネルからアクセスします。一部のコントロールパネルでは、ユーザーインターフェースからエラーログを確認することもできます。

対処法 2: .htaccess ファイルを再生成する

破損した .htaccess ファイルは、Apache ベースのサーバーで 500 エラーが発生する最も一般的な原因の一つです。このファイルは WordPress のルートディレクトリにあり、wp-adminwp-includeswp-content フォルダーと同じ場所にあります。

.htaccess ファイルを編集

再生成するには次のようにします。

  1. FTP またはホスティングのファイルマネージャーでサイトに接続します。
  2. 既存の .htaccess の名前を .htaccess_backup に変更し、フォールバックを用意します。
  3. .htaccess という名前の新しいファイルを作成し、WordPress のデフォルトのリライトルールを貼り付けます。
# BEGIN WordPress

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

# END WordPress

サイトを再読み込みします。破損した .htaccess が原因だった場合、エラーはすぐに解決します。

WordPress 管理画面からの代替手段: まだダッシュボードにアクセスできる場合は、「設定」>「パーマリンク」に移動し、何も変更せずに「変更を保存」をクリックします。WordPress はその保存時に .htaccess を自動的に再生成します。

対処法 3: PHP のメモリ制限を引き上げる

PHP は各ページリクエストをメモリの上限の範囲内で処理します。プラグイン、テーマ、または複雑なクエリがその上限を超えると、サーバーは 500 エラーを返します。共有ホスティング環境での私たちのテストでは、サイトに最近の変更がなくエラーが発生した場合、PHP のメモリ不足が最も一般的なサーバー側の引き金です。

制限は 2 つの方法で引き上げられます。

オプション A: cPanel から(ホスティングが提供している場合)

  1. cPanel にログインします。
  2. 「Select PHP Version」を開きます。
  3. 「Switch to PHP Options」をクリックします。
  4. memory_limit をクリックし、値を 256 または 512(MB)に引き上げてから保存します。

オプション B: wp-config.php から

wp-config ファイルを編集

wp-config.php を開き、先頭付近に次の行を追加します。

define('WP_MEMORY_LIMIT', '256M');

ファイルを保存してサイトを再読み込みします。メモリ不足が原因だった場合、保存後にエラーは解決します。

対処法 4: すべてのプラグインを無効化する

プラグインの競合は、WordPress の 500 エラーの根本原因としてよくあるものです。対処法 1 でデバッグログにプラグインの競合が確認された場合、またはログを読めない場合は、すべてのプラグインを無効化して 1 つずつ再有効化することで原因を特定できます。

WordPress 管理画面にアクセスできる場合:

  1. ダッシュボードの「プラグイン」に移動します。
  2. 上部のチェックボックスを使ってすべてのプラグインを選択します。
  3. 「一括操作」ドロップダウンから「無効化」を選び、「適用」をクリックします。 WordPress ダッシュボードでプラグインを選択 WordPress 管理ダッシュボードでエラーをトラブルシューティングするためにプラグインを無効化する
  4. サイトを再読み込みします。エラーが消えたら、プラグインを 1 つずつ再有効化し、そのたびに再読み込みして、エラーが再び現れるまで続けます。最後に有効化したプラグインが原因です。

WordPress 管理画面にアクセスできない場合:

FTP で接続し、プラグインフォルダーの名前を変更します。

  1. /wp-content/plugins の名前を /wp-content/plugins-disabled に変更します。
  2. サイトを再読み込みします。復旧した場合は、プラグインの競合が確認できたことになります。
  3. フォルダー名を /wp-content/plugins に戻します。
  4. 各プラグインのサブフォルダー名を変更して個別に無効化し(たとえば /wp-content/plugins/woocommerce/wp-content/plugins/woocommerce-disabled に変更)、変更のたびに再読み込みします。

対処法 5: WordPress のコアファイルを再インストールする

プラグインやテーマの変更なしにエラーが発生した場合、破損した WordPress のコアファイルが原因かもしれません。コンテンツ、プラグイン、テーマを上書きせずにコアを再インストールできます。

  1. wordpress.org から WordPress の最新版をダウンロードします。
  1. ダウンロードしたアーカイブを解凍します。
  2. FTP またはホスティングのファイルマネージャーでサーバーに接続します。
  3. 既存の /wp-admin フォルダーと /wp-includes フォルダーの名前を /wp-admin-backup/wp-includes-backup に変更します。
  1. 解凍したアーカイブから新しい /wp-admin フォルダーと /wp-includes フォルダーを同じ場所にアップロードします。
  1. サイトを再読み込みします。破損したコアファイルが原因だった場合、アップロードの完了後にエラーは解決します。

この処理の間、wp-config.phpwp-content フォルダーは置き換えないでください。これらのファイルには、データベースの認証情報とアップロード済みのすべてのメディアが含まれています。

対処法 6: ホスティングプロバイダーに問い合わせる

上記の 5 つの対処法のいずれでもエラーが解決しない場合、問題は WordPress インストール内ではなく、サーバーレベルにある可能性が高いです。サーバーレベルの原因には次のものが含まれます。

  • クラッシュした、または静かに停止した PHP-FPM プロセス
  • サーバー更新中に持ち込まれた Apache または Nginx の設定ミス
  • PHP による WordPress ファイルの読み取りをブロックするファイル権限の変更
  • PHP のメモリ制限とは無関係なサーバーレベルのリソース制限

ホスティングプロバイダーのサポートチームに連絡し、対処法 1 で見つけたサーバーエラーログの関連する行を共有してください。ほとんどのマネージド WordPress ホスティングは、ログからサーバーレベルの 500 エラーを迅速に診断できます。

ホスティングが問題を解決できない場合、または通常の負荷で 500 エラーが頻繁に再発する場合は、サイトの要件に合ったより高性能なホスティング環境を検討する時期かもしれません。

WordPress 動画チュートリアルをさらにご覧になるには、私たちの YouTube チャンネル を購読し、Twitter および Facebookでつながりましょう。

どの対処法でも解決しない場合の対応

6 つの対処法をすべて試してもエラーが解決しない場合は、この表を使って残りの可能性を絞り込んでください。

症状 確認すべきこと
WP_DEBUG を有効にした後もデバッグログが空 サーバーレベルのエラーログ(対処法 1 の Apache または Nginx のパス)を確認してください。PHP エラーが WordPress のログ層に届いていない可能性があります
すべてのプラグインを無効化してもエラーが発生する FTP で /wp-content/themes/ にある有効なテーマのフォルダー名を変更し、デフォルトの WordPress テーマ(Twenty Twenty-Four など)に切り替えます
フロントエンドではなく wp-admin でのみエラーが発生 /wp-content/mu-plugins/ 内の管理画面固有のプラグインまたはファイルが読み込まれて失敗している可能性があります。このディレクトリを確認してください
500 エラーが単一の URL でのみ発生 投稿固有のショートコード、カスタムフィールド、またはブロックが致命的なエラーを引き起こしている可能性があります。WP_DEBUG を有効にしてその URL にアクセスし、ログのエントリを取得してください
ホスティングプロバイダーがサーバーエラーはないと言う PHP-FPM プロセスの状態と、PHP ワーカープールが最近再起動されたかどうかを具体的に尋ねてください

関連記事

Rene Hermenau

著者: Rene Hermenau

著者について: René Hermenau は WP STAGING の創設者です。WordPress のバックアップ、ステージング、移行、データベース処理、安全なデプロイメントワークフローに取り組んでいます。