- ベストアンサー
CGIをアスキー転送モードでアップすると「Internal Server Error」となります。
CGIをダウンロードして、サーバーにアップロードしたのですが、 CGIが作動せず、「Internal Server Error」となってしまいます。 KENTのフリーCGIほか、いろいろなCGIで試してみても同様です。 転送モードやパーミッション等の基本的な設定は間違っておりません。 他のサーバーであれば、問題なく動きました。 いろいろと試したところ、どうやら改行コードの問題のようだったため、 ダウンロードしたCGIファイルを、エディタにてLFに変換して保存し、 バイナリ転送モードにてアップロードしたところ、作動しました。 通常であれば、このようなことをしなくても、ダウンロードしたCGIファイルを アスキー転送モード(もしくは自動)でアップロードすれば 作動すると思うのですが、この原因は何なのでしょう? サーバー側の設定の問題なのでしょうか? どなたかもし分かりましたら、ご教授お願いいたします。
- みんなの回答 (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 -- のように変更すると、アスキーモードでもうまく行くかもしれません。
その他の回答 (1)
- umasikajiro
- ベストアンサー率67% (545/803)
一番高い可能性としては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.htm http://www.geocities.co.jp/SiliconValley/4137/translation/tcllib_1_6_1/ja-ftp.txt
お礼
ご回答ありがとうございます。お礼が遅くなり申し訳ありません。 現在、訳あってFTPソフトの設定を確認することはできないのですが、 エディタにてLFに変換してからアップロードした際、 バイナリ転送モードでアップロードすると作動し、 アスキー転送モードするとエラーとなったということは、 モード指定に関係なくバイナリーモードになっているわけでないようです。 ちなみに、ソフトは「FFFTP」を利用しました。 バージョンが古いのが原因かとも思ったため、 最新版もダウンロードしてしてみましたが、同様の結果でした。 > ・FTPクライアントのバグでセッション中にasciiコマンドを送っていない > クライアント側でCR+LF => LF変換もしていない FTPクライアントのバグというのは、「FFFTP」のバグということですね? その他にも、サーバーのバグという可能性も考えられるのですね。 大変参考になりました。 詳しいご回答、ありがとうございました。
お礼
kumoz様、ご回答ありがとうございます。 やはりWEBサーバーの設定の可能性が高いのですね。 次回作業の際に、ご教示いただいた方法を試してみます。 アドバイス、大変ありがとうございました。