CGI(Perl)が 500 Internal Server Error のときの確認箇所いろいろ

May 19, 2013

500エラーは何が原因なんだか検討もつかず途方に暮れるものです。

ググればいろいろなサイトで対処法が載っていますが、 後輩が困ってたので自分用も兼ねつつのまとめです。

他の手段も覚えたら随時更新します。

Syntax Check

基本の基本ですが、ファイルに構文エラーがないか確認しておきます。

# perl -c filename.cgi

おまじないハイフン

ソースコードの冒頭を確認します。

#!/usr/bin/perl -
...code...

サーバによってはperlのパスが違うこともあるので以下も試します。

#!/usr/bin/local/perl -
...code...

ハイフンふたつとかも試してみる。

#!/usr/bin/perl --
...code...

ファイルの文字コードを確認

Perlでは、Sjift_JISでは特定のマルチバイトがきたとき、うまく動きません。 古いPerl環境の場合は、ソースに漢字・日本語が混じるときはいったんEUC-JPにしてみると幸せになれそうです。 テキストエディタで保存する際、文字コードをEUCにして保存するとよいです。

改行コードの変更

Windows端末でCGIファイルを作成していたり、上書き保存していたりしたら要確認。 CRLFである場合はCR消しましょう。LF残しで。 消すツールはなんでもいいですが、nkfコマンドがラク。

# nkf -Lu filename.cgi

エラーメッセージを見よう

そこまでやったら、サーバのエラーログを確認します。



Recent blog posts



(c) Copyright 2023 Kotaro Yoshimatsu