Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: namazu.cgiについて



寺西です。

平屋 宏記 wrote:
> 
> 検索ページを用意しており、検索結果画面の[検索方法]をクリックすると、
> namazu.cgiを直接呼び出しているので、下記のようなエラーを出してしまいます。
> 
> Webブラウザでは、
> HTTP 500- 内部サーバー エラーが表示されています。
> 
> iPlanetのログを添付いたします。
> =================================================================
> failure (10373): for host 133.185.22.121 trying to
> GET/cgi-bin/namazu.cgi, cgi_scan_headers reports: the CGI program
> /usr1/public_html/cgi-bin/namazu.cgi did not produce a valid header
> (name without value: got line "namazu of namazu 2.0.12")
> =================================================================

これから考えられるのは、
/cgi-bin/namazu.cgi として呼び出した場合、QUERY_STRING 環境変数が
未設定になる。
/cgi-bin/namazu.cgi? として呼び出した場合、QUERY_STRING 環境変数は
"" に設定される。
という iPlanet Web サーバの仕様なのではないか? ということです。
(apache では両方とも "" が設定されます。)

namazu.cgi は CGI として起動しないと、エラーメッセージを出して
終了します。(これはコマンドラインから namazu.cgi を呼び出せば
どうなるかわかるでしょう。)
Namazu では、CGI として起動されたかどうかの判定に QUERY_STRING 
環境変数と SCRIPT_NAME 環境変数をチェックします。両方共設定され
ていなければ、エラーメッセージを出して終了します。

このエラーメッセージは、ただのテキストなので CGI の出力に必要な
ヘッダ情報がありません。そうなると、当然のことながらエラーに
なります。

と、前置きが長くなりましたが、そうならば Win32 と同じ対処方法で
とりあえず解決できるのではないかと思われます。

src/namazu-cgi.c の 152 行目を 150 行目と同じにします。
つまり、
if (!(getenv("QUERY_STRING")
を
if (!((getenv("QUERY_STRING") || getenv("SERVER_SOFTWARE"))
と書き換えて、namazu を再コンパイル + インストールしてみて
試してみてください。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E