Perlでcgiを作成した際のInternal Server Error

今日は、過去にあったperlで書いたcgiのエラーについて。

perlの動くがサーバであれば、cgiはとても便利です。
もちろんpythonで書いても良いんですが、今回はperlのお話。
pythonネタはまた別の機会に。

まず前提として、cgiを動かすサーバはCentOSです。
で、前にcgiをいざ動かそうとしたら、Internal Server Error応答。
ま、とりあえず、権限とか見てみます。
cgiファイルは、

chmod 755

で実行権限与えておきましょうね。

で、権限の問題じゃない、てなった時は、とりあえずお約束どおりエラー内容を確認しましょう。

WebサーバがApacheなら、
/var/log/httpd/配下にerror-logが吐き出されているはずです。

もしくは、
/etc/httpd/logs/
でもOKです。(/etc/httpdの構成であれば)

で、確認すると、以下のようなエラーログが。

Can’t locate HTTP/Request/Common.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at CGIのパス.cgi line 3.

line 3.
はモジュールを読み込んでいる箇所です。

エラー内容は、
Can’t locate モジュール名 in @INC

つまり、モジュールが読み込めないぜ、オラオラオラオラオラ!って感じで、
怒られてます。
怖いですね。

なので、モジュールがないのか恐る恐る確認してみます。

perl モジュール名

って打てばOKです。

そうすると、

# perl HTTP::Request::Common
Can’t open perl script “HTTP::Request::Common”: そのようなファイルやディレクトリはありません

うん、やはりないですね。すみません、すみません。

コマンドから対話式で確認しても良いです。

perl -e ‘use モジュール名;’

って打てば、エラーログに出ていたのと同じ
Can’t locate モジュール名 in @INC

て返ってくると思います。

さ、では、モジュールをインストールしましょう!

yumでできます。便利ですねー、本当に。

yum install perl-モジュール名

これだけ。
あとは、モジュールに依存関係のあるモジュールも一緒にインストールされます。

新しいサーバでcgi動かすぞ、ってなった時なんかは忘れがちでやってしまう内容でした。

てな感じで、お疲れ様でしたー。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です