68user's page 掲示板

Prev< No. 245〜248> Next  [最新発言に戻る] [過去ログ一覧]
No. 245 # 68user 1999/03/29 (月) 20:44
> ファイルハンドルを指定しなくとも最後に openしたハンドルのみ
> クローズされると、思っていたのですが。suidな時、STDOUTまで
> クローズされませんか?
suidかどうか/httpd経由かコマンドラインか に関わらず、STDOUTが
クローズされました。そもそもcloseってファイルハンドルを省略
すべきでないし、仮に省略した場合はselectで指定されたファイル
ハンドル(デフォルトはSTDOUT)がクローズされるんじゃないですかね?
# perl4、perl5.004で試しました。

> ところで、wrapper.cgiでのurl指定方法のwrapper.cgi/hoge.cgi
> は、知ってはいたのですがどういう動作になるのですか?
print文を埋め込んで試してみませう ;-)

No. 246 # M.Masuda 1999/03/29 (月) 23:01
>suidな時、STDOUTまでクローズされませんか?
ホントだぁ...これまた私の勘違い。
いままで作ったスクリプトを見直したら、ちゃんとやってました。
意識していたわけではなく、性格的な問題?からそうしていたの
ですが、これって案外重要だったのですね。
この件でのスクリプトでの試験では、安易にそうしていただけでし
た。#お恥ずかしい。(*^_^*;;;

closeのみだとSTDOUTまでクローズされ、結果スクリプトが終了して
しまうのですね。

>パスが通って無いのが原因と判明しました。
よく考えたら、スクリプト内で$ENV{PATH}=''としてるのに、何を
言ってるんでしょう私は。(; ;)
でもなんで、$ENV{PATH}=''としなければいけないのでしょうか。
新たな疑問!
#まるで小学生のガキが、なぜなぜ攻撃してるみたいですが..(^^ゞ
#最近、私を含め周りにUNIX信者が増えている模様です。
#だって面白いんだもん。

>print文を埋め込んで試してみませう ;-)
すいません、オバカでよく分からないのですが具体的にどうすれば
私にも理解できるでしょうか。
↑完全に開きなおってるかもしれない(^_^)V

これだけいろいろ御世話になっているので、何かお礼がしたいとこ
ろですが、なにか出来る事が有れば言って下さい。
と、いっても何が出来るわけでは無いし....でも気持ちだけは有り
ます。(本気度=120%)

No. 247 # 68user 1999/03/30 (火) 04:14
> すいません、オバカでよく分からないのですが具体的にどうすれば
> 私にも理解できるでしょうか。
何を知りたいのかわからないので、全部は説明したくないです(結構な量になるので)。
何を知りたいのでしょうか? できれば
    open(EXEC,"| .$ENV{PATH_INFO} 2>&1");
というのを書いたのだから、「とりあえずPATH_INFOの値を見てみる」
くらいは試してください。

> でもなんで、$ENV{PATH}=''としなければいけないのでしょうか。
一言で言えば「汚れている」からです。消す必要はなくて、PATHを
再設定すればよかったですね。長くなるので青ラクダ本 P.409 参照。

別に質問するなってわけじゃないですけど、自分で調べる努力は必要です。
それでもわからなかったらどんどん質問すればいいですけど、その際でも
極限まで発生条件を切り詰めた上で、
    「何がわからないか」「どのような状況で調べたのか」
などを書かないと、結局 回答者側が苦労するハメになります。

No. 248 # M.Masuda 1999/03/30 (火) 18:31
よかったやっと見れるようになった。(^^ゞ

う〜んすいませんです。
>> すいません、オバカでよく分からないのですが具体的にどうすれば
>> 私にも理解できるでしょうか。
> 何を知りたいのかわからないので、全部は説明したくないです(結構な量になるので)。

>「print文を埋め込んで試してみませう ;-)」
この意味そのものが分からなかったのです。m(_ _)m

この文がどういう意味で書いたのか、何を言いたかったのか、
と言う意味で、単純に私の日本語理解度が足りないための質問でした。

> 何を知りたいのでしょうか? できれば
>  open(EXEC,"| .$ENV{PATH_INFO} 2>&1");
>「とりあえずPATH_INFOの値を見てみる」
> くらいは試してください。

setコマンドで環境変数を見てみましたが PATH_INFOは設定されてい
ませんでした。

私なりに理解できた部分は open(EXEC,"| .$ENV{PATH_INFO} 2>&1");
.$ENV{PATH_INFO} の実行結果の標準&エラーを、openして標準入力
から読込み、表示させているという事位ですが。

前に使い方を、教えてもらい(wrapper.cgi/script.cgi)このような
URL指定でscriptcgiを実行すると、コマンドラインでの結果の様な表示に
なりました。


まず最初に、wrapper.cgi/script.cgi この様な指定をすると(URLで)
httpdはどういう事を行うのでしょうか?
予想1:
$ENV{PATH_INFO}には、コマンドでの引数に当たるものが代入される?

予想2:
最初に出現したwrapper.cgiの引数に、script.cgiを与えて実行する?

$ENV{PATH_INFO}この環境変数自体が、いつどのように設定されるのかが
解からないので、動作の結果から推測だけですが....
スクリプトやコマンドの実行時に、コマンドラインでの引数を指定する
のと同じような動作になるのでしょうか?

仮に上記の予想が合っているとして、「print文を埋め込んで試してみませう ;-)」
この文は、どこにprint文を入れろと言っているのかが、解からなかったのです。

私にとってまだ頭の中では、wrapper.cgi/script.cgiの様な指定方法は、
掲示板等では話題としては知っていましたが、具体的な内容まではまだ
未解析でした、すいませんです。

Prev< No. 245〜248> Next  [最新発言に戻る] [過去ログ一覧]