カレッヂ |
質問者 ぴから
投稿日 2004/1/20(火) 16:18:20
バイナリのCGIを実行できません。 スクリプトのCGIプログラムは普通に実行できているので、 CGI環境としては整っているようです。 また、「% ./ファイル名」でも挙動は正常なので、このCGI プログラム自体にも問題はなさそうです。 が、IEでそのファイルにアクセスすると.... ファイルの保存(ファイルのダウンロード)が始まってしまうんです! 何なんでしょう?
プロバイダ参照: |
回答者 しあわせのツボ
[削除]
投稿日 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裏技 |