正しいCGIをアップしたら動かない(interQ)

[上に] [前に] [次に]
AKISE [HomePage] 2000/01/11(火) 18:54:17
うちの環境
マシン:DOS/V
OS:WindowsNT
FTPソフト:FFFTP

どうみても正しいはずのCGIをアップして、
パーミッションも755にしているのですが、動きません。
CGIは以下の通りです。Perlの絶対パスも合っています。
去年アップしたCGIは動いていますが、
同じスクリプトで上書きすると動かなくなります。

↓↓↓↓↓ここから↓↓↓↓↓

#!/usr/local/bin/perl

print "Content-type: text/html\n";
print "\n";
print "<HTML>\n<BODY>\n";
print "CGIテスト\n";
print "</BODY>\n</HTML>\n";

↑↑↑↑↑ここまで↑↑↑↑↑

このスクリプトのURLは
http://cgi.members.interq.or.jp/pluto/akise/cgi-bin/test1.cgi
です。
アクセスすると以下のようなエラー画面が出ます。それまで動いていた
他のCGIスクリプトを同じスクリプトで上書きした時も同じエラー画面になります。

↓↓↓↓↓ここから↓↓↓↓↓

CGIWrap Error: Script Execution Failed

------------------------------------------------------------------------

CGIWrap encountered an error while attempting to execute this script:

Error Message: No such file or directory
Error Number: 2
This message usually indicates there is a problem with the script itself. The owner of the script needs to check the #! line for correctness.

Server Data:

Server Administrator/Contact: customer@interq.or.jp
Server Name: cgi.members.interq.or.jp
Server Port: 80
Server Protocol: HTTP/1.1

Request Data:

User Agent/Browser: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)
Request Method: GET
Remote Address: 210.157.17.191
Remote Port: 64834

↑↑↑↑↑ここまで↑↑↑↑↑

CGIが動かなくなったのは今年に入ってからなので、(去年は動いてました)
interQのサーバーに原因があるのかと思い、問い合わせましたが、
サーバーには異常は見られないとの事です。
規定でCGIスクリプトのサポートまではしない事に
なっているので、これ以上interQに問い合わせる事ができません。
ちなみにinterQのPerlの絶対パスはここに記述があります。
http://members.interq.or.jp/faq/cgi.html#hc02

他になにか、原因が考えられるでしょうか?

そもそもは、うちは以前とほほさんの掲示板を少し改造して使用していて、
それは2000年未対応版だったので、$yearに+1900してアップした所、
急に前述のようなCGIエラーになったのが発端です。

ラウォッチ 2000/01/11(火) 19:17:06
もしかしたら、以下かも知れません!

../199912/99120417.htm

たかまろ 2000/01/11(火) 20:11:03
久々の登場

試しに、uploadしました。
ちゃんと表示しますよ。
http://cgi.members.interq.or.jp/www-user/maskwhot/test.cgi

たかまろ 2000/01/11(火) 20:14:31
そちらのスクリプト
#!/usr/local/bin/perl
の上を一行空けてませんか?

AKISE 2000/01/12(水) 08:56:52
うう。interQって変態サーバだったんですか。。。
当分掲示板やめるつもりなんで半分あきらめてますが…
>一行空けてませんか?
あけてないです。
もうinterQでサイト作るのやめよかな…

確かにinterQのサポートはレベルが低いです。
忙しすぎるのかもしれないけど、質問メール送ってもロクに
読んでないフシがあります。

他にも犠牲者が出るかもしれないんで、様子を見てみますね。
という訳で解決チェックは保留です。

B-Cus 2000/01/12(水) 10:03:34
> うう。interQって変態サーバだったんですか。。。
確かに変態サーバですが、今回の問題の原因が変態サーバに
あることを突き止めないうちにこういう発言をするのは問題アリかと。

スクリプトの改行コードが 0x0D 0x0A になっているから、に一票。
アスキーモードで PUT してみては。

たかまろ 2000/01/12(水) 18:54:09
じゃあ こっちのやつ削除しますね。

AKISE 2000/01/12(水) 19:16:07
[[解決]]
ちゃんと動くようになりました。
B-Cusさんのおっしゃる通り、改行コードが
Shift Jis の CR + LF になっていたせいでした。
改行コードをLFにし、アスキーモードで転送することで解決しました。

改行コードについて詳細に説明している便利なページを見つけました。
http://www.ddt.or.jp/japanese/guide/cgi/cgiFAQ.html

改行コードがCGIに影響を及ぼす事は全く知らなかったので、
勉強になりました。B-Cusさん、たかまろさんありがとうございました。

それにしてもなんでinterQは急に
CR + LF じゃダメになったんでしょうね?謎です。
(たかまろさんがアップされて大丈夫だったという事は、
  大丈夫な所とそうでない所があるのかもしれない)
FFFTPの設定がバイナリモードになっていたせいかもしれませんが。

B-Cus 2000/01/12(水) 20:07:38
普通の UNIX では (少なくとも FreeBSD・NetBSD・Solaris では)
CR LF のスクリプトは動きません。この件で InterQ を責めるのは筋違いです。

うまく動かないからといって、簡単に「InterQ だからおかしい」と
結論づけることはしないで下さい。
> FFFTPの設定がバイナリモードになっていたせいかもしれませんが。
実際、あなたの設定ミスが原因だったわけですから。

AKISE 2000/01/12(水) 21:51:16
>InterQ を責めるのは筋違いです。
そうですね。すみませんでした。
確かに私のミスでした。

素朴人 2000/01/12(水) 23:28:20
割り込み、そして解決後に悪いのですが、初心者の素朴な疑問 &
知識として知りたいので失礼します。

> スクリプトの改行コードが 0x0D 0x0A になっているから、に一票。
は、どう見れば発見出来る(出来た)のでしょうか?
エラーメッセージの
> Error Number: 2
だからですか?1行目の改行がおかしい、という意味として?

すみませんが、よろしくお願いします。

AKISE 2000/01/13(木) 09:36:31
>どう見れば発見出来る(出来た)のでしょうか?
Windowsの改行コード、つまり Shift Jis は自動的に CR(0x0D) + LF(0x0A) になります。
B-Cusさんは私が最初に書いた
>OS:WindowsNT
を見てそう判断されたのでしょう。

ちなみに改行コードの変更にはこのソフトを使いました。

ページブラウザ
http://www.asahi-net.or.jp/~tc7y-ssgw/pgbr.htm

AKISE 2000/01/13(木) 10:33:27
自己フォローです。
さっきアスキーモードとバイナリモードの事を調べたら、
アスキーモードはテキストファイルの改行コードを自動的に
CR + LF から LF へ変換してくれるそうで、
ページブラウザは不要だったんですね。
無知ですみません。

ラウォッチ 2000/01/13(木) 11:32:11
B-Cusさんへ
私の早どちりから嫌なおもいさせて、すみませんでした。
さすが、B-Cusさんフォローがお上手です。

私もperlをやり始めはバイナリモード転送で痛い目に合っています。
あと、CGIデバックしていてはまるのは、
ブラウザのキャッシュ機能にだまされるのと、
前回のよい状態を残す為、リネームしたあと、
新たにアップロードしたやつに実行権が落ちたのを気づかないことかな。
とにかく、解決してよかったです。

[上に] [前に] [次に]