500 Internal Server Errorが発生する主な原因と対処法

公開 2026.05.07 更新 2026.07.14 読了 8分

500 Internal Server Errorが発生する主な原因と対処法

500 Internal Server Errorとは

500 Internal Server Error(以下、500)は、サーバー本体がリクエストの処理中に予期しないエラーを起こし、応答を返せなかった状態を示すHTTPステータスコードです。サーバーエラー(5xx番台)に分類され、原因はサーバー側のアプリケーションや設定にあります。

500が返される仕組み

ブラウザからのリクエストは、CDN・リバースプロキシ・ロードバランサーなどの中継機器を経由してWebサーバー本体に届きます。サーバー本体までリクエストが到達したうえで、処理の途中に異常が起きた状態が500です。エラーの原因はサーバー本体にあり、中継経路の障害で返る502や、一時的な過負荷・メンテナンスで返る503とは原因の所在が異なります。時間の経過では解消せず、原因そのものを取り除く必要がある点も502・503との違いです。
(5xxの位置づけ:500=サーバー本体の処理異常/502=中継と上流間の通信障害/503=一時的な利用不可/504=中継から上流への応答タイムアウト)

500エラーが発生する主な原因

500エラーはサーバー側の問題で発生します。代表的な原因は以下の通りです。

アプリケーションのプログラムエラー

PHPやCGIなどのスクリプト内で例外が発生したり、シンタックスエラーが残っていると500を返します。エラーメッセージや例外トレースはサーバーのエラーログ(Apacheのerror_log、Nginxのerror.log、PHPのerror_log等)に記録されます。

サーバー設定ファイル(.htaccess等)の記述ミス

Apacheの.htaccessに書式違反のディレクティブを記述したり、有効でないモジュール指定を含めると500が発生します。設定変更直後に500が出始めた場合は、最後の編集差分を確認します。

ファイル・ディレクトリのパーミッション設定ミス

ファイル/ディレクトリの実行権限・読み込み権限が不足していると、Webサーバーがアクセスできずに500を返します。

メモリ不足・実行時間のタイムアウト

PHPでmemory_limitを超えるメモリを消費したり、max_execution_timeを超える処理時間がかかると、PHPが処理を打ち切って500を返します。php.iniの値や、共用サーバーでの上限値を確認します。

PHPバージョン非互換・ライブラリ依存の問題

サーバーのPHPバージョンを変更した直後に500が出る場合、互換性のない関数・記法が原因です。WordPressサイトでは、テーマやプラグインがサポート外のPHPバージョンで動作しているケースが該当します。

WAF・セキュリティモジュールによるリクエスト拒否

ModSecurity等のWAFが特定パターンのリクエストを拒否し、500を返すケースがあります。エックスサーバーやロリポップの共用サーバーでは、サーバー側のセキュリティ機能が誤検知することがあります。

訪問者として500エラーに遭遇した場合の対処法

他社サイトの閲覧中に500が表示された場合、訪問者として試せることは次の通りです。500はサイト側で原因を解消しないと直らないため、訪問者側でできることは限られます。

  • ブラウザを更新(リロード)して再度アクセスする
  • ブラウザのキャッシュとCookieをクリアして再アクセスする
  • 別のブラウザや別のネットワーク(モバイル回線等)から開く
  • 急ぎの場合はサイト運営者に問い合わせる

これらで表示されないときは、サイト側の復旧を待つことになります。

サイト運営者向けの500エラー対処法

自サイトで500エラーが発生した場合、サーバー側のログ確認から原因を特定します。

サーバーのエラーログを最初に確認する

500エラーの原因解消は、サーバーのエラーログ確認から始めます。代表的なログ参照場所は以下の通りです。

  • Apacheの場合:/var/log/apache2/error.log または /var/log/httpd/error_log
  • Nginxの場合:/var/log/nginx/error.log
  • PHPの場合:php.iniのerror_logで指定したファイル(共用サーバーは管理画面で確認)
  • WordPressの場合:wp-config.phpにdefine(WP_DEBUG, true);define(WP_DEBUG_LOG, true);を設定してwp-content/debug.logを確認

ログのタイムスタンプと500発生時刻を突き合わせ、エラーメッセージや例外トレースから直接の原因を特定します。

.htaccessの記述ミスをチェックする

直前に.htaccessを編集していた場合、編集差分を確認します。問題箇所を切り分けるため、.htaccessを一時的にリネーム(例: .htaccess_bak)してアクセスできるかを確認すると、.htaccessが原因かどうかが切り分けられます。

ファイル・ディレクトリのパーミッションを確認する

新しくアップロードしたファイルや、サーバー移行直後の場合、パーミッション設定が原因のことがあります。一般的な推奨値は以下の通りです。

対象 推奨パーミッション 備考
ディレクトリ 755 所有者は読み書き実行、それ以外は読み実行のみ
HTMLファイル 644 所有者は読み書き、それ以外は読みのみ
PHPファイル 644 所有者は読み書き、それ以外は読みのみ
CGIスクリプト 755 実行権限が必要
.htaccess 644 所有者は読み書き、それ以外は読みのみ

PHPの設定とライブラリ依存を確認する

memory_limitの上限超過や、max_execution_timeのタイムアウトが疑われる場合は、php.iniまたは.htaccessで値を一時的に上げ、再現性を確認します。共用サーバーでの変更先は、管理画面の「PHP設定」です。PHPバージョン変更後に発生した500では、テーマ・プラグイン側の互換性を確認します。

WordPressの場合のチェックポイント

WordPressサイトで500エラーが発生した場合、原因の切り分け順序は以下の通りです。

  1. wp-content/pluginsをリネームして全プラグインを一括無効化し、復旧するか確認する
  2. テーマをデフォルトテーマ(Twenty Twenty-Four等)に切り替えて確認する
  3. .htaccessを一時退避してパーマリンク設定を再保存する
  4. PHPメモリ上限を一時的に引き上げる
  5. WordPress本体のコアファイルを再アップロードする

プラグイン無効化で復旧した場合は、1つずつ有効化して原因プラグインを特定します。

500エラーに関するよくある誤解と注意点

500エラーに関して、SEO担当者・サイト運営者が混同しやすいポイントを整理します。

500・502・503の混同

画面上は同じ「サーバーエラー」と見えても、原因の所在が異なります。500はサーバー内部のアプリケーション例外、502は中継経路の問題、503は一時的な利用不可。原因の所在に応じて対処手順が変わるため、サーバーログで具体的なステータスコードを確認してから対処しましょう。

「とりあえずブラウザを更新」では解消しないことが多い

500はサーバー側の原因解消が必要なケースが多いため、訪問者がブラウザを更新しても解消しないことが大半です。一時的な処理エラー(タイムアウト等)で更新により解消するケースもありますが、再現性がある場合はサイト運営者の対応待ちです。

サイバー攻撃と疑う前にログを確認

500がサイバー攻撃の兆候として表示されるケースは限定的で、多くは内部のプログラムエラーや設定ミスが原因です。WAFのログで攻撃トラフィックが検知されていない場合、エラーログでアプリケーション例外を確認するのが効率的です。

共用サーバーでは「PHPバージョン」の自動更新に注意

共用サーバー(エックスサーバー、ロリポップ等)では、PHPバージョンの自動更新やサポート終了に伴って、互換性のないテーマ・プラグインが原因で500が出始めるケースがあります。サーバー側のお知らせとPHPバージョン設定を定期的に確認しましょう。

5xxエラーがSEOに与える影響

500を含む5xxエラーは、解消が長引くほどSEOに響きます。500は原因を取り除くまで復旧しない性質があるため、復旧の長期化に特に注意します。

クロール時に500が返るとインデックス更新が遅れる

Googlebotがクロールした瞬間にURLが500を返すと、その時点ではコンテンツを取得できず、インデックスへの反映が遅れます。短時間で復旧すれば影響は限定的ですが、原因が残ったまま500が続くと影響は広がります。

500が頻発するとサイト全体のクロール頻度が下がる

Googleは、繰り返し5xxを返すサイトに対してクロール頻度を抑えます。サーバーへの負荷を避けるための動作で、結果としてサイト全体でインデックス更新が遅くなります。

サーバーエラー(5xx)と5xxとして扱われるネットワークエラーとDNSエラーは、Googleのクロールに対してマイナスの影響を及ぼします。
https://developers.google.com/search/docs/crawling-indexing/http-network-errors?hl=ja

長期化したURLはインデックスから外れることがある

500が長期間続いたURLは、最終的にインデックスから除外される場合があります。500は時間では直らないため、原因を特定して復旧させ、復旧後はSearch Consoleで再クロールを依頼します。

500エラーが発生しているURLを確認する方法

自サイトで500が発生しているURLは、次の方法で確認します。500はSearch Console上では他の5xxとまとめて表示されるため、最終的なコード特定にはサーバーログを併用します。

Search Consoleの「ページ」レポートで5xxを洗い出す

「ページ」レポートでは、検出された5xxが「サーバーエラー(5xx)」としてまとまって表示されます。確認の手順は、左メニュー「ページ」→「ページがインデックスに登録されなかった理由」→「サーバーエラー(5xx)」と開き、影響URLを把握する流れです。このレポートは500・502・503・504を区別せず統合表示するため、500かどうかはサーバーのアクセスログ・エラーログで確定させます。

URL検査ツールで個別URLの現在のコードを見る

特定URLの最新状態は、URL検査ツールのライブテストで確認します。実行後、「その他の情報」タブのHTTPレスポンスに、現時点のステータスコードが表示されます。

kunugi SEO Checkerで手早くコードを確認する

弊社のChrome拡張機能「kunugi SEO Checker」のパネルデータタブには、表示中ページのステータスコード(200・500・503等)が出るため、ブラウジングしながら短時間で確認できます。ここで表示されるのは自分の端末・ネットワークから見たコードである点に注意してください。

← 記事一覧へ戻る

DOWNLOADダウンロード

自然検索流入を増やし、コンバージョン率を改善するための手法やノウハウなど、ウェブマーケティングに関する様々な資料をダウンロードいただけます。ぜひご活用ください。

サービス/お役立ち資料

CONTACTコンタクト

ご不明点・ご質問がある方、施策にご興味がある方、自社の施策でご相談がある方など、お気軽にお問い合わせください。

お問い合わせ