Perl

概要 [#ra9928b1]

Internal Server Errorとなる原因、および対処方法です。

原因 [#c23aae56]

1.Perlプログラムのパスが異なる。 [#f5c01ca5]

CGIファイルの一行目に記述しているパスを下記コマンドにて確認してください。

 # which perl
 /usr/bin/perl

2.権限に誤りがある。 [#m3bcb674]

実行権限が無いなどの理由によりエラーになっている可能性があります。

一時的に777などにして権限をフルにして切り分けを行い、777で接続できのでればそこから不要な権限を落としていくのも手段です。
※くれぐれもそのままにはしないようにご注意ください。あとは、CGIプログラム提供元があれば権限を確認する、サーバーの動作要件、例えばsuEXEC環境でないと動作しないなど確認してください。

3.必要なプログラムがインストールされていない。 [#xc2e5d2c]

 Can't locate CGI/Carp.pm

上記のようなエラーがerror.logに記述されている場合はperl-CGIがインストールされていないのが原因のため、下記コマンドでインストールしてください。

 # yum install perl-CGI

4.改行コードがサーバーと異なる。 [#aadfb4e5]

Linuxサーバー上でWindowsからファイルを作成して転送すると、改行コードが¥r¥nとなり、コンパイル出来ずにCGIがエラーを引き起こします。

その場合は下記コマンドにて、チェック、対処をすることで改善します。なお、Windowsでもサクラエディタ等を使用することで改行コードの一括置換が可能なようです。

 # od -c 該当ファイル.cgi
 ここで¥r¥nが確認できれば改行コードが原因
 
 # tr -d <該当ファイル.cgi> 別名ファイル.cgi
 # od -c 別名ファイル.cgi