DevToolBox

500 Internal Server Error とは?原因と対処法

最終更新日: 2026-07-26公開日: 2026-07-26執筆: DevToolBox編集部

500 Internal Server Errorは、Webサーバーがリクエストを受け取ったものの、 内部処理で予期しない問題が発生し、正常な応答を返せなかったことを示します。 「アクセスしようとしたページは表示できませんでした」とだけ出る場合も、詳細な原因はサーバー側のログにあります。

HTTP 500 means the server encountered an unexpected condition while processing the request. Visitors can retry later, while site operators should inspect server and application logs.

HTTP Status Codes

500を含むHTTPステータスコードの意味を検索し、502・503・504との違いも確認できます。

今すぐ試す →

TL;DR

1. 訪問者側でできる対処法

500は基本的にWebサイト側の問題です。端末の設定を大きく変えたり、修復ソフトを導入したりする必要はありません。 次の順に確認してください。

  1. 一度だけ再読み込みする: 一時的な失敗なら復旧することがあります。決済や送信の直後は二重実行を避け、履歴を先に確認します。
  2. 数分から数十分待つ: 運営者が障害対応やロールバックを行っている可能性があります。
  3. 別端末や別回線で確認する: 全員に起きるか、特定のログイン状態だけかを切り分けられます。
  4. 運営者へ問い合わせる: URL、発生時刻、直前の操作、表示文言を伝えます。パスワード、カード番号、認証トークンは送らないでください。

500エラーはウイルス感染を示す表示ではありません。HTTPの応答コードなので、表示されただけでパソコンやスマートフォンが感染したと心配する必要はありません。 ただし、エラー画面から不審なソフトの導入を促された場合は従わないでください。

2. 500 Internal Server Errorの意味

サーバーは入力を受け取り、アプリ実行、DB参照、HTML生成などを行います。その途中で未処理例外、 設定ミス、権限エラー、外部サービス接続失敗などが起き、より具体的なコードを返せない場合の一般的な応答が500です。

500は原則としてそのサーバー自身の内部処理の失敗です。一方、502は上流から不正な応答を受けた ゲートウェイ、503は一時的な利用不能、504は上流応答のタイムアウトです。 詳細は502・503・504の比較記事も参照してください。

コード意味主な確認先
500サーバー内部の予期しない失敗アプリ・Webサーバーログ
502上流から不正な応答プロキシ・上流アプリ
503一時的にサービス不能負荷・保守・容量
504上流の応答待ちでタイムアウト処理時間・ネットワーク

3. 運営者向け:主な原因一覧

「発生直前に何を変更したか」と「同じ時刻のログ」を結び付けます。ブラウザの文言だけで決めつけず、 再現URLとリクエストIDを軸に調査します。

原因ログの手掛かり最初の対処
未処理例外スタックトレース、例外名最初の自作コード行と入力を確認
設定ファイルの記述ミスsyntax error、directive not allowed直前の.htaccessや設定差分を戻す
パーミッション不正permission denied所有者と最小限の権限を確認
PHPメモリ上限・非互換memory exhausted、fatal error原因処理と互換バージョンを確認
DB接続失敗connection refused、timeout接続先、資格情報、DB稼働を確認
デプロイ直後の不整合module not found、schema mismatch依存関係と移行順序を確認

4. 環境別の切り分け

WordPress / PHP

WordPressではプラグイン、テーマ、.htaccess、PHPバージョン、メモリ上限が代表的な原因です。 直前に更新したプラグインから無効化し、管理画面に入れない場合はFTPやファイル管理で対象ディレクトリ名を一時変更します。

デバッグ情報は公開画面に表示せずログへ出します。調査後は設定を戻し、ログに認証情報や個人情報が残っていないか確認します。

Node.js / Python

Node.jsでは例外名からスタックを下へ読み、最初に現れる自分のアプリのファイルと行番号を探します。 Pythonではトレースバックを追い、最後の例外型とメッセージを確認して呼び出し元へ戻ります。 ライブラリ内部の行だけでなく、その関数へ渡した入力と設定を確認してください。

Read the exception type and message first, then locate the first stack frame that belongs to your application. Correlate it with the request timestamp, route, release, and error ID.

nginx / Apache

nginxの代表的なログは/var/log/nginx/error.log、ApacheはDebian・Ubuntu系で/var/log/apache2/error.log、RHEL系で/var/log/httpd/error_logです。 実際の場所は仮想ホストやコンテナ構成で変わるため、error_logErrorLog設定も確認します。

nginxが500を生成したのか、PHP-FPMやアプリから500を受け取ったのかを区別します。同じ時刻のアクセスログで URL、ステータス、リクエストIDを特定し、対応するエラーログを読みます。

5. エラーログ確認のコマンド例

次の例はLinuxサーバー向けです。権限やログ管理方式は環境に合わせ、機密情報を共有チャットへ貼り付けないでください。

直近のnginxエラーを見る

sudo tail -n 100 /var/log/nginx/error.log
sudo journalctl -u nginx --since "15 minutes ago"

ApacheとPHP-FPMのログを見る

sudo tail -n 100 /var/log/apache2/error.log
sudo journalctl -u php8.3-fpm --since "15 minutes ago"

コンテナの直近ログを見る

docker compose ps
docker compose logs --since 15m app
docker compose logs --since 15m nginx

時刻、URL、HTTPメソッド、デプロイ版、リクエストIDを揃えると、アクセスログとアプリログを横断して同じ失敗を追跡できます。 ログが大量なら、まず時間範囲とサービスを絞ってください。

6. 正しい500エラーの返し方

利用者向け応答は短く一貫させ、スタックトレース、ファイルパス、SQL、環境変数、内部ホスト名を含めません。 詳細は構造化ログへ記録し、利用者には問い合わせに使えるランダムなエラーIDだけを返します。

{
  "error": "internal_server_error",
  "message": "処理を完了できませんでした",
  "errorId": "err_7J4K2M"
}
出力先含める情報含めない情報
利用者への応答一般的な説明、エラーID例外詳細、秘密情報
内部ログ例外、スタック、リクエストID、版パスワード、トークン、個人情報
監視通知発生率、影響範囲、ログへのリンク全ログ本文、顧客入力

単発の500だけでなく、エラー率、対象ルート、レイテンシ、デプロイとの相関を監視します。 しきい値を超えたらアラートを送り、担当者がエラーIDからログへ到達できる運用にします。

7. アンチパターン

8. よくある質問 / FAQ

500エラーは自分のせいですか?

多くの場合はサイト側の問題です。特定の入力でだけ起きる場合も、入力を安全に処理して適切な4xxを返す責任はサーバー側にあります。 再読み込みで直らなければ運営者へ情報を伝えてください。

「アクセスしようとしたページは表示できませんでした」と出たらどうしますか?

ブラウザやサービス独自の500エラー文言である可能性があります。一度だけ再読み込みし、続くなら時間を置きます。 運営者にはURL、時刻、直前の操作、表示文言を伝えてください。

500と503はどう違いますか?

500は予期しない内部処理の失敗です。503は過負荷、保守、依存サービス停止など、一時的に提供できない状態です。 503では復旧見込みをRetry-Afterで示せます。

9. English summary

500 Internal Server Error means the server failed while processing a request and could not provide a more specific response. Visitors should retry once, wait, and report the URL, time, and action if the error continues. A 500 page alone does not indicate a virus infection.

Site operators should correlate the request with application, nginx, Apache, PHP-FPM, or container logs. Check recent deployments, exceptions, configuration syntax, permissions, memory limits, runtime compatibility, and database connectivity. Return a generic message and an error ID; keep stack traces in protected logs, and never hide failures behind HTTP 200.

よくある質問 / FAQ

500エラーは自分のせい?
多くの場合、訪問者の端末ではなくWebサイトのサーバー内部で起きた問題です。再読み込みしても続く場合は、時間を置くか運営者へ連絡してください。
ウイルスの心配は?
500エラーが表示されただけで、端末がウイルスに感染したことを意味しません。500はサーバー内部の処理失敗を示すHTTPステータスです。
WordPressで500が出た時に最初にやることは?
直前に変更したプラグインやテーマを無効化し、サーバーのerror.logとwp-content/debug.logを確認します。管理画面に入れない場合はプラグインのディレクトリ名を一時変更します。
What does 500 Internal Server Error mean?
It means the server encountered an unexpected condition and could not complete the request. The exact cause should be investigated in the application or web server logs.
500と503の違いは?
500はサーバー内部の予期しない処理失敗、503は過負荷やメンテナンスなどによる一時的なサービス利用不能を示します。
運営者に問い合わせる時に伝えるべき情報は?
エラーが出たURL、発生時刻、直前に行った操作、表示された文言を伝えてください。個人情報やパスワードは送らないでください。

関連ツール / Related tools

関連ガイド / Related guides