アプリ版:「スタンプのみでお礼する」機能のリリースについて

CGIをダウンロードして、サーバーにアップロードしたのですが、
CGIが作動せず、「Internal Server Error」となってしまいます。
KENTのフリーCGIほか、いろいろなCGIで試してみても同様です。
転送モードやパーミッション等の基本的な設定は間違っておりません。
他のサーバーであれば、問題なく動きました。

いろいろと試したところ、どうやら改行コードの問題のようだったため、
ダウンロードしたCGIファイルを、エディタにてLFに変換して保存し、
バイナリ転送モードにてアップロードしたところ、作動しました。

通常であれば、このようなことをしなくても、ダウンロードしたCGIファイルを
アスキー転送モード(もしくは自動)でアップロードすれば
作動すると思うのですが、この原因は何なのでしょう?
サーバー側の設定の問題なのでしょうか?

どなたかもし分かりましたら、ご教授お願いいたします。

A 回答 (2件)

他のサーバで問題がなく特定のサーバのみダメなのは、ftp サーバの設定が原因だと思います。


CGI の1行目は #!/usr/bin/perl (または #!/usr/local/bin/perl) になっているかと思いますがが、
末尾の改行を変換していないと、Unix のシェルは #!/usr/bin/perl(CR)(LF) から (LF) のみを除去して、
/usr/bin ディレクトリに perl(CR) というファイルを探しに行き失敗します。

#!/usr/bin/perl を #!/usr/bin/perl -- のように変更すると、アスキーモードでもうまく行くかもしれません。
    • good
    • 0
この回答へのお礼

kumoz様、ご回答ありがとうございます。
やはりWEBサーバーの設定の可能性が高いのですね。
次回作業の際に、ご教示いただいた方法を試してみます。
アドバイス、大変ありがとうございました。

お礼日時:2008/05/19 19:14

一番高い可能性としてはFTPクライアントSOFTの設定で


拡張子 .cgi はモード指定に関係なくバイナリーモードにするオプション設定されているのかも?

そうでなければ
・FTPクライアントのバグでセッション中にasciiコマンドを送っていない
  クライアント側でCR+LF => LF変換もしていない
・またはFTPクライアント側でCR+LF => LF変換はしていないが
  asciiコマンドは送っている しかしサーバーのバグでasciiコマンドを無視している
のどちらかになります。

RFCとか見てみましたが
ASCII方式は すべてのコンピュータで必ずサポートされていなくてはならない
とあり
通常はasciiコマンドとともにFileの中身を受け取った側が
自分の環境に合わせて(この場合ならCR+LF => LFに)変換するようです
http://hp.vector.co.jp/authors/VA002682/rfc959j. …
http://www.geocities.co.jp/SiliconValley/4137/tr …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。お礼が遅くなり申し訳ありません。

現在、訳あってFTPソフトの設定を確認することはできないのですが、
エディタにてLFに変換してからアップロードした際、
バイナリ転送モードでアップロードすると作動し、
アスキー転送モードするとエラーとなったということは、
モード指定に関係なくバイナリーモードになっているわけでないようです。

ちなみに、ソフトは「FFFTP」を利用しました。
バージョンが古いのが原因かとも思ったため、
最新版もダウンロードしてしてみましたが、同様の結果でした。

> ・FTPクライアントのバグでセッション中にasciiコマンドを送っていない
>   クライアント側でCR+LF => LF変換もしていない

FTPクライアントのバグというのは、「FFFTP」のバグということですね?
その他にも、サーバーのバグという可能性も考えられるのですね。

大変参考になりました。
詳しいご回答、ありがとうございました。

お礼日時:2008/05/19 13:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!