PerlをCGIで実行した際に、下記が出る事があるかと思います。


CGI 実行エラーです
500 : Internal Server Error





これは、「エラーがでたよ」と教えてくれてるだけで、具体的な話はなーんも言ってません。


具体的な内容は、基本エラーログに出力されます。


共用サーバの場合は。。。見れない場合もありますが。。。


設定を変更していなければ下記ファイル名で、どっかに出力されてます。


error_log


パスは下記あたりですかね?


/var/log/httpd/error_log



エラーが発生する原因は以下多いようです。


・実行権限が付与されていない(755 とか 700 とかを設定)

・そもそも文法に間違えあり

・改行コードがLFになっていない

・cgi-binディレクトリ以下でしか実行できない


等ですかね。



あと特殊なケースとして、suExecによる制限に引っ掛かる時ですかね。


これはCGIを実行するユーザを指定するApacheのモジュールです。


これが設定されていると、ファイル、及び設置してあるディレクトリのユーザとグループが一致していないと、実行ができないというものです。


/etc/httpd/conf/httpd.conf や /etc/httpd/conf/ssl.conf 等のVirtualHostディレクティブに下記が、記載されています。


SuexecUserGroup apache apache

一つ目の引数apacheはユーザ名

二つ目の引数apacheはグループ名


を指定してます。


なので、下記のように変更すれば


SuexecUserGroup admin root

rootグループのadminユーザでCGIを実行する事になります。


ちなみに無効にしたい場合もあるかと思います。その時は


#SuexecUserGroup apache apache

とコメントしてしまえばOKです。


エラー解消されず、まだ試して無い方は試してみてわ。