500エラー 【HTTP 500 Internal Server Error】
概要
500エラー(HTTP 500 Internal Server Error)とは、Webサーバで起きるエラーの種類の一つで、サーバ内部で何らかのエラーが発生し、要求を完了できなかったことを示すもの。WebサーバとWebブラウザなどのクライアントの間ではHTTP(Hypertext Transfer Protocol)という通信規約(プロトコル)でデータ伝送を行っている。クライアントからの要求(リクエスト)に対してサーバは応答(レスポンス)を返すが、その際に現在の状態を示すHTTPステータスコードを通知する。
ステータスコードの500番台はサーバ側で生じたエラーを表しており、500番のエラーメッセージは “Internal Server Error” (サーバ内部エラー)である。サーバソフトウェアが要求を処理する過程で致命的なエラーが生じ、クライアントへ正常な応答を返せないことを表す。
例えば、クライアントが要求したURL文字列に処理に支障をきたすような内容が含まれ、これを処理するサーバ側のプログラムが異常終了してしまった場合や、プログラム自体に誤り(バグ)が含まれている場合などが考えられる。
また、実行するプログラムファイルのアクセス権限(パーミッション)の指定ミスや、サーバの設定ファイルの記述ミス、アクセスが集中して過負荷で一時的に処理不能になっている状態、その他、原因や状況の詳細は不明だがとにかく処理が完遂できなかった場合に返される。
Webサーバ全体が完全に機能停止して何も応答できなくなっている場合は503エラー(Service Unavailable)を返すのが一般的なため、500エラーはサーバ自体は動作しており、正常に要求を処理できる場合もあるが、特定の要求で内部エラーが生じて処理に失敗している状況を表している。
(2022.11.8更新)
HTTPステータスコード一覧
コード | 意味 | 初出 |
---|---|---|
100番台:Informational (情報) | ||
100 Continue | 継続 | HTTP/1.1 |
101 Switching Protocols | プロトコル切替 | HTTP/1.1 |
102 Processing | 処理中 | RFC 2518 |
103 Early Hints | 予想ヘッダの先行送信 | RFC 8297 |
200番台:Success (成功) | ||
200 OK | 成功 | HTTP/1.0 |
201 Created | 作成完了 | HTTP/1.0 |
202 Accepted | 受理 | HTTP/1.0 |
203 Non-Authoritative Information | 非公式な情報 | HTTP/1.1 |
204 No Content | 内容が空 | HTTP/1.0 |
205 Reset Content | 表示を初期化せよ | HTTP/1.1 |
206 Partial Content | 内容の一部を送る | HTTP/1.1 |
207 Multi-Status | 複数ステータスが混在 | RFC 4918 |
208 Already Reported | 以前に通知済み | RFC 5842 |
226 IM Used | 差分符号化されている | RFC 3229 |
300番台:Redirection (転送) | ||
300 Multiple Choices | 複数の候補がある | HTTP/1.1 |
301 Moved Permanently | 恒久的に移転 | HTTP/1.0 |
302 Found *1 | 別の場所で見つけた | HTTP/1.0 |
303 See Other | 別の場所を探せ | HTTP/1.1 |
304 Not Modified | 変更なし | HTTP/1.0 |
305 Use Proxy | 中継サーバを通せ | HTTP/1.1 |
307 Temporary Redirect | 一時的な転送 | HTTP/1.1 |
308 Parmanent Redirect | 恒久的な転送 | RFC 7538 |
400番台:Client Error (クライアントエラー) | ||
400 Bad Request | 不正なリクエスト | HTTP/1.0 |
401 Unauthorized | 未認証 | HTTP/1.0 |
402 Payment Required | 有料である | HTTP/1.1 |
403 Forbidden | アクセス権がない | HTTP/1.0 |
404 Not Found | 存在しない | HTTP/1.0 |
405 Method Not Allowed | そのメソッドは不可 | HTTP/1.1 |
406 Not Acceptable | 受理不可 | HTTP/1.1 |
407 Proxy Authentication Required | プロキシの認証が必要 | HTTP/1.1 |
408 Request Timeout | 時間切れ | HTTP/1.1 |
409 Conflict | 競合 | HTTP/1.1 |
410 Gone | 消滅した | HTTP/1.1 |
411 Length Required | 長さを指定せよ | HTTP/1.1 |
412 Precondition Failed | 前提条件不整合 | HTTP/1.1 |
413 Content Too Large *2 | 受信データが長すぎる | HTTP/1.1 |
414 URI Too Long *3 | URIが長すぎる | HTTP/1.1 |
415 Unsupported Media Type | データ形式非対応 | HTTP/1.1 |
416 Range Not Satisfiable *4 | 要求範囲が誤っている | HTTP/1.1 |
Expectヘッダの処理に失敗した | HTTP/1.1 | |
(かつてジョークRFCで使われた) | RFC 2324 | |
送信先が間違っている | HTTP/2 | |
受信データは処理できない | RFC 4918 | |
要求リソースはロックされている | RFC 4918 | |
依存関係の解決に失敗 | RFC 4918 | |
TLSのEarly-Data処理に失敗 | RFC 8470 | |
新しいバージョンのHTTPを使え | HTTP/1.1 | |
条件付きリクエストにせよ | RFC 6585 | |
短時間に要求を送りすぎである | RFC 6585 | |
長過ぎる要求ヘッダ項目がある | RFC 6585 | |
法的な理由で拒否 | RFC 7725 | |
500番台:Server Error (サーバエラー) | ||
500 Internal Server Error | サーバ内部のエラー | HTTP/1.0 |
501 Not Implemented | 機能が未実装 | HTTP/1.0 |
502 Bad Gateway | 中継サーバのエラー | HTTP/1.0 |
503 Service Unavailable | サービス停止中 | HTTP/1.0 |
504 Gateway Timeout | 中継サーバの要求が時間切れ | HTTP/1.1 |
505 HTTP Version Not Supported | HTTPバージョンが非対応 | HTTP/1.1 |
506 Variant Also Negotiates | 版指定で循環参照が発生 | RFC 2295 |
507 Insufficient Storage | ストレージ容量が不足 | RFC 4918 |
508 Loop Detected | 要求処理中に無限ループが発生 | RFC 5842 |
510 Not Extended | HTTP拡張機能には非対応(廃止済み) | RFC 2774 |
511 Network Authentication Required | キャプティブポータルで認証を受けよ | RFC 6585 |
*2 413はHTTP/1.1では「Request Entity Too Long」、RFC 7231では「Payload Too Long」だった。
*3 414はHTTP/1.1では「Request-URI Too Long」だった。
*4 416はHTTP/1.1では「Requested Range Not Satisfiable」だった。
*5 418は1998年エイプリルフールのジョークRFC 2324で「I'm a teapot」として定義されていた。