![]() |
| カレッヂ |
質問者 ぴから
投稿日 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裏技 |