CGI-BBS > サーバ > Apache > Apacheでバイナリを呼び出し、CGIを実行できるようにするには?


カレッヂ
カレッヂ


質問者 POOH  投稿日 1/9(火) 15:47:56
こんにちは。初めて投稿します。

Solaris2.6のマシンにapache1.3.14を入れましたが、あるサイトからフリーソフト(バイナリで配布しており、ソースは非公開)をダウンロードしましたが、CGIプログラムを実行できません。
スクリプトのCGIプログラムは普通に実行できているので、CGI環境としては整っているようです。「% ./ファイル名」でも挙動は正常なので、このCGIプログラム自体にも問題はなさそうです。

が、IEでそのファイルにアクセスすると以下のメッセージが表示されます。

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, xxx@xxx and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
ログファイルにはこのように書かれています。
[error] syntax error at /usr/local/apache/cgi-bin/to/
to00.cgi line 2, near "#line 1 /usr/local/apache/cgi-bin/to/to00.cgi
#!/bin/sh/usr/local"

httpd.confで「AddHandler cgi-script .cgi」と設定してあるため、拡張子の.cgiに反応して、perlか何かで書かれたスクリプトと判断して処理してしまうからだと思いますが。

.cgiがつくファイルを実行ファイル(バイナリ)だと認識して処理するような設定の方法を教えてください。

よろしくお願いします。
回答者 まさ  [削除]  投稿日 1/9(火) 17:09:52
.cgiならPerlスクリプトと判断するのであれば、拡張子を変えればいいのでは。
基本的にCGIは拡張子何でも動きます。なくてもいいです。
質問者 POOH  [削除]  投稿日 1/9(火) 17:30:06
お返事どうもありがとうございます。

> .cgiならPerlスクリプトと判断するのであれば、拡張子を変えればいいのでは。
> 基本的にCGIは拡張子何でも動きます。なくてもいいです。

さっそく試してみました。
確かに、出したい画面が1つであればそれでもよいのですが、次の画面を呼び出すときに
やはり同じ問題が起こってしまいます。
xxx.cgiをxxxに変えても、そこで入力されたパラメータ(IDとパスワード)をもとに、自
動的にyyy.cgiを呼び出してしまうからです。

ちなみに、このフリーソフトは http://tr.qupa.com/to/index.htmで配布しているグル
ープウェアなのですが、ソースを公開していないので、次に呼び出すファイル名をいじる
ことができないのです。
やはり、バイナリはバイナリとして直接実行できるようにしなくてはならないようです。

もしまた何かありましたら、どうぞよろしくお願いします。
回答者 しあわせのツボ  [削除]  投稿日 1/9(火) 18:15:39
ApacheをインストールしたのはPOOHさん自身ですよね?
なら
> httpd.confで「AddHandler cgi-script .cgi」と設定してあるため
こっちをコメントアウトしてしまうのはどうでしょう。
Perl CGIも必要なら.htaccessで認識させられますし。
質問者 POOH  [削除]  投稿日 1/9(火) 18:42:36
access.confで
SetHandler perl-script
という行をコメントアウトすることによって、解決しました。

アドバイス、どうもありがとうございました。

このページは終了したので返信(回答)は書きこめません

Web裏技