1.32bで、以下の対策を確認しました。
http://homepage1.nifty.com/yito/namazu/gbook/20001102.1536.html
どうもありがとうございました。
中田昭雄 様
>次のバージョン(今週末予定)で直します。
解決されたようで良かったです。
>それまで待てない場合は、(以下略)
待てないなんてとんでもないです。
フリーウェアにも関わらず、迅速な対応で感謝致しますm(_ _)m
米村さん、
ソースを見直したところ、いとも簡単にミスがあることがわかりました。
現状ではおっしゃる通りで SCRIPT_NAME が (ECBの)PATH_INFO に入ってしまっていました。
次のバージョン(今週末予定)で直します。
それまで待てない場合は、リクエストからではなく(つまり、TWebRequestではなく)、プロセスの環境変数 PATH_INFO を取得するようにすればとりあえず大丈夫だと思います。
ちょうどタイミングが良かったです(^^;
>PATH_INFO の取得は ECB からでしょうか? cmdIS.dll は直接環境変数を取得しています。
C++BuilderではTWebRequestというクラスでカプセル化されてまして
APL開発者はどのように取得しているかわからないんです。
# 結果をもらうだけです。
>1.20d ではOKなのですよね(?)。昔のソースも手元にあるので調べてみます。
そうです。単純に AN HTTPD を差し替えるだけで動くようになるので、
AN HTTPD 側の問題かな?と思っただけで(前述の通りブラックボックス
なので)確証はありません。
試せることがありましたら何なりと御申しつけください。
米村さん、
PATH_INFO の取得は ECB からでしょうか? cmdIS.dll は直接環境変数を取得しています。
ECB.lpszPathInfo が最近のバージョンでおかしいのかもしれません。
1.20d ではOKなのですよね(?)。昔のソースも手元にあるので調べてみます。
1.20d と 1.30f の間のバージョンをお送りすることは可能ですが、上記の通り PATH_INFO の取得方法をお知らせ下されば、こちらで調べた方が早そうですから。
毎度素早い回答で恐れ入ります。
>1.31c の httpd.exe を引数つき(たとえば "httpd.exe new" など)で起動してください。
>そうすると設定内容はデフォルト状態になりますからドキュメントルートなどの必要な部分のみ変更してください。
>そしてたとえば
>http://127.0.0.1/scripts/cmdIS.dll/cgi-bin/test.bat?query=0
>はどうなりますか?
(IPアドレスは自分のPCのものに変更しました)
デフォルトの起動では何も表示されませんが
"httpd.exe new"で起動すると以下(抜粋)の通り正常に動作していました。
SCRIPT_NAME=/scripts/cmdIS.dll
SCRIPT_FILENAME=H:\temp\httpd\scripts\cmdIS.dll
PATH_INFO="/cgi-bin/test.bat"
PATH_TRANSLATED="H:\temp\httpd\cgi-bin\test.bat"
ただ、この状態でも私のdllのPathInfoはScriptNameと一緒になってしまいます。
ちなみに1.30fでも同様でした。
それ以前のバージョンで試してみたいのですが、ダウンロードサイトはありませんでしょうか?
米村さん、
おかしいですね。昔の設定をひきずっているのかもしれません。
1.31c の httpd.exe を引数つき(たとえば "httpd.exe new" など)で起動してください。
そうすると設定内容はデフォルト状態になりますからドキュメントルートなどの必要な部分のみ変更してください。
そしてたとえば
http://127.0.0.1/scripts/cmdIS.dll/cgi-bin/test.bat?query=0
はどうなりますか?
>中田昭雄 nakata@st.rim.or.jp 2000/11/02 21:21
>米村さん、
>症状から言うと、拡張子 .dll --self-- のところで「PATH_TRANSLATED を使う」(PT)にチェックがはいってしまっているように思えますが、そのようなことはありませんか?
チェックは入っていませんでした。
改めて、チェックのON/OFFを試してみましたが、
いずれの場合も症状は同じでした。
デバッグバージョン等がありましたら、
試してみることは可能ですのでお知らせください。
米村さん、
症状から言うと、拡張子 .dll --self-- のところで「PATH_TRANSLATED を使う」(PT)にチェックがはいってしまっているように思えますが、そのようなことはありませんか?
はじめまして。1年くらい前からWin98で HTTP Serverとして使わせて頂いております。
最近、HPを拝見したところ、重大なバグがあるということで
最新版を入手しましたところC++Builderで作成したCGIが正常に動作しなくなってしまいました。
症状は
http://homepage1.nifty.com/yito/namazu/gbook/20000822.1336.html
のケースと同様です。
URLとして http://localhost/scripts/mycgi.dll/path?query=0 を指定した場合、
C++BuilderのTWebRequestでは
ScriptName=/scripts/mycgi.dll
PathInfo=/path
という内容になるはずなのですが、
PathInfo=/scripts/mycgi.dll
となってしまいます。
V1.20d では正常に動作しますが、V1.31c に差し替えると上記症状となってしまいます。
いずれもデフォルトの設定です。
まだ解決されてないようですので、取りあえず状況報告まで。