500エラー 【HTTP 500 Internal Server Error】

概要

500エラー(HTTP 500 Internal Server Error)とは、Webサーバで起きるエラーの種類の一つで、サーバ内部で何らかのエラーが発生し、要求を完了できなかったことを示すもの。

WebサーバとWebブラウザなどのクライアントの間ではHTTPHypertext Transfer Protocol)という通信規約(プロトコル)でデータ伝送を行っている。クライアントからの要求(リクエスト)に対してサーバは応答(レスポンス)を返すが、その際に現在の状態を示すHTTPステータスコードを通知する。

ステータスコードの500番台はサーバ側で生じたエラーを表しており、500番のエラーメッセージは “Internal Server Error” (サーバ内部エラー)である。サーバソフトウェアが要求を処理する過程で致命的なエラーが生じ、クライアントへ正常な応答を返せないことを表す。

例えば、クライアントが要求したURL文字列に処理に支障をきたすような内容が含まれ、これを処理するサーバ側のプログラムが異常終了してしまった場合や、プログラム自体に誤り(バグ)が含まれている場合などが考えられる。

また、実行するプログラムファイルのアクセス権限(パーミッション)の指定ミスや、サーバの設定ファイルの記述ミス、アクセスが集中して過負荷で一時的に処理不能になっている状態、その他、原因や状況の詳細は不明だがとにかく処理が完遂できなかった場合に返される。

Webサーバ全体が完全に機能停止して何も応答できなくなっている場合は503エラーService Unavailable)を返すのが一般的なため、500エラーはサーバ自体は動作しており、正常に要求を処理できる場合もあるが、特定の要求で内部エラーが生じて処理に失敗している状況を表している。

(2022.11.8更新)

HTTPステータスコード一覧

*1 302はHTTP/1.0では「Moved Temporarily」だった。
*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」として定義されていた。