CGI-BBS > サーバ > Apache > [Apache]バイナリcgiをIEで開くとダウンロードになってしまう。


カレッヂ
カレッヂ


質問者 ぴから  投稿日 2004/1/20(火) 16:18:20
バイナリのCGIを実行できません。

スクリプトのCGIプログラムは普通に実行できているので、
CGI環境としては整っているようです。
また、「% ./ファイル名」でも挙動は正常なので、このCGI
プログラム自体にも問題はなさそうです。

が、IEでそのファイルにアクセスすると....
ファイルの保存(ファイルのダウンロード)が始まってしまうんです!

何なんでしょう?

プロバイダ参照:
サーバのOS:UNIXサーバ
パソコンのOS:WinNT系
エディタ:
FTPソフト:
サーバ移転:していない
改造:していない
CGI習熟度:(未選択)

回答者 しあわせのツボ  [削除]  投稿日 2004/1/20(火) 18:09:17
話があまりに漠然としているので、何とも言えないのですが…。
もっと詳しく説明しないと、誰も答えられないと思います。
「バイナリCGI」とは何を指すのか、それ以外のCGIは動作しているのか、
IE以外のMozillaやOpera等ではどうなるか、などなど。

一般論からいくと、Apacheが関与するのは「リクエストをCGIに渡し、
そこから戻された結果を返す」だけなので、CGIがPerlだろうがC++だろうが
Javaだろうが、それが実行できさえすれば同じ動作をします。
「バイナリだから」は原因ではないと思います。

勘からいくと、CGIの出力するヘッダに問題があるように思います。
text/html以外のcontent-typeを返しているのではないでしょうか。
質問者 ぴから  [削除]  投稿日 2004/1/20(火) 19:44:42
早速のレスありがとうございます。
そうですねf^_^;
もう少し詳しく書いてみます。

1.スクリプトのCGIプログラムは普通に実行できている
  →http://www.kent-web.com/さんの所のCGIは動きます。

2.「% ./ファイル名」でも挙動は正常
  →この実行プログラムをGNOME端末上で実行すると、
   きちんとhtml文が返ってくる。

3.バイナリーCGIとは
  →http://tr.qupa.com/to/index.htm
   上記サイトからダウンロードしたCGIプログラムです。
   テキストエディタで内容確認できるタイプのCGIでなくて、
   コンパイルされたバイナリー形式のCGIプログラムです。

4.各ブラウザーでの挙動
  →IE ファイルの保存(ファイルのダウンロード)が始まる
  →Mozilla =バイナリファイルをテキストエディタで開い
         て見た状態と同じになる。

っと、こんな感じです。

どんな些細なアドバイスでも良いので、お願いいたします。
回答者 しあわせのツボ  [削除]  投稿日 2004/1/20(火) 20:22:25
バイナリが落ちてくるとなると…
Apacheが、それをCGIだと認識していないような感じですね。
ダウンロードされてしまうものが設置したCGI自身と酷似していれば、
その可能性が高いでしょう。
特に.htaccessをいじったりしていないと仮定して、
他の(正常動作する)CGIと違う拡張子になっていませんか?
質問者 ぴから  [削除]  投稿日 2004/1/20(火) 21:06:36
そうですね、言われるとおり
まさに「設置したCGIそのものが落ちて」きてます。

正常に動くCGIは、スクリプトのモノなので、そのCGIの動作確認は、
httpd.confに「AddHandler cgi-script .cgi」を入れて実行して
正常動作を確認しています。

それで、本CGIはスクリプトでないので、動作確認を行なうためは、
その行をコメントアウトしています。

参考にしていただければ思いますので、httpd.confの抜粋を乗せて
おきます。

よろしくお願いいたします。
-------------------------------------------------------------
DocumentRoot "/home"
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory "/home">
Options FollowSymLinks Includes ExecCGI MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
<IfModule mod_userdir.c>
    UserDir /home/*/public_html
</IfModule>
<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>
TypesConfig /etc/mime.types
DefaultType text/plain
<Directory "/home/*/public_html/cgi-local">
    AllowOverride None
    Options +ExecCGI
    Order allow,deny
    Allow from all
</Directory>
<Directory "/home">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
#AddHandler cgi-script .cgi




回答者 しあわせのツボ  [削除]  投稿日 2004/1/20(火) 22:09:46
それをコメントアウトしちゃダメです(苦笑)。
バイナリだろうと何だろうと、同じ記述をしてください。

CGIは一般にスクリプトなことが多い(?)のでcgi-scriptとなっていますが、
単に「拡張子が.cgiだったらCGIとして処理してね」というだけの指定です。
Apacheは「これはCGIなんだな。CGIさんお願いしまーす」と投げるだけで、
それがどんな言語で動いているかは知らないし、知る必要もないのです。

返信(回答)する

 


Web裏技