500

読み:ごひゃく
外語:500: Internal Server Error
品詞:名詞

HTTPが返すステータスコードの一つ。Internal Server Error。サーバ内エラー発生。

CGIで稼働するプログラムを作っていれば、一度は出くわすエラーのひとつ。

サーバ内処理でエラーが発生してしまい、Webサーバで必要とするデータが得られなかった場合にこのエラーが出力される。

次のような条件でよく発生する。

  • Perlの文法が間違っている
  • Perlから読み込むはずのファイルが実際には無い
  • 改行コードがサーバ環境に合っていない(例えばCR/LF)
  • ファイルのパーミッションが不正
  • Content-Typeヘッダを出力していない
  • ヘッダと本文中に改行が無い
  • 標準出力への出力が空

つまり、CGIの出力が無効な場合は全てこのエラーになってしまうため、このエラーから原因を推測することは非常に難しい。

一般的に標準エラー出力に吐き出された実行時エラーメッセージがサーバのエラーログ内に記録されているので、対処にはこれを参照する必要がある。

このログを閲覧できない環境にある場合はtelnetなどでシェルを使いコマンドライン上でCGIプログラムを動かしてみるか、あるいはローカル環境で動作テストするか、プログラムの標準エラー出力を開き直して標準出力かファイルに出力させるなどの対策を取る。