「CGIが動かない」で嵌った

現在Vine3.1からCentOS5.4へ環境移行を行ってたのですが、「CGIが動かない」現象で嵌ったのでその時のメモ

結論から言うと、centOSのvsftpd(FTPサーバ)の設定にてasciiコードの送受信を許可してなかったからでした。

まずはエラーの状況説明
http.confにてAddDefaultCharsetをUTF-8→noneに設定
cgiパーミッションを正確に設定したのにブラウザからは以下のエラー

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, hide@hidenet.ath.cx and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache/2.2.3 (CentOS) Server at 192.168.1.XXX Port 80

apacheのエラーログは、

[Thu Feb 11 19:04:57 2010] [error] [client 192.168.1.XXX] (2)No such file or directory: exec of '/home/*******/public_html/cgi-bin/****.cgi' failed
[Thu Feb 11 19:04:57 2010] [error] [client 192.168.1.XXX] Premature end of script headers: ****.cgi


調べてみるとこの辺がヒントらしきものが・・・
http://d.hatena.ne.jp/otn/20090818/p1
cgiの先頭行を
#!/usr/bin/perl --←追加
でも正常に動作するようになりますが、民間療法らしいです。

そこで更に原因究明に探すと・・・
http://sakaguch.com/PastBBS/0032/B0016504.html

どやら、FTPサーバの設定が間違ってたらしい。(デフォルトのまま使ってた)

対策は以下の通り
viで /etc/vsftpd.conf を編集

以下の項目に移動
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=NO
↓変更
ascii_upload_enable=YES
#ascii_download_enable=NO
↓変更
ascii_download_enable=YES

保存して、再起動
# /etc/init.d/vsftpd restart

で、FTPでコンテンツを再送信でOKでした。