You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@perl.apache.org by Geoffrey Young <ge...@modperlcookbook.org> on 2004/02/11 16:36:10 UTC
Re: [MP2] Problem in retrieving additional environment variables
Stas Bekman wrote:
> Geoffrey Young wrote:
>
>>> But, let's forget for a moment mp1. What's the most intuitive way to
>>> handle:
>>>
>>> $r->subprocess_env(foo => $bar)
>>>
>>> won't you sort of expect that %ENV will get that entry too?
>>
>>
>>
>> well, knowing how apache works it was definitely a surprise when I
>> looked at
>> subenv.t :)
>
>
> Are you referring to the line:
>
> $env = $r->subprocess_env; #table may have been overlayed
>
> where it says "may have been"?
>
>> so, no, I wouldn't expect it to work that way. CGI-style scripts should
>> expect only documented things within %ENV - REMOTE_USER, HTTPS, etc.
>> handlers should be using $r->subprocess_env to access additional
>> parameters
>> that only they know about - why would a handler populate
>> $r->subprocess_env
>> with some random variable in one phase, then check %ENV in another
>> phase for
>> it? it's inefficient to populate %ENV that way when you have access
>> to both
>> methods.
>
>
> OK. You know, as you explain things you should really put them down to
> the docs. So we don't have to explain it again.
>
>>> may be we
>>> should adjust subprocess_env to set %ENV as well. %ENV gets reset at the
>>> end of the request.
>>
>>
>>
>> per-request scoping is _definitely_ the desired behavior here.
>
>
> No questions about that.
>
>>> Hmm, I wonder what happens if you use an interpreter scope == handler
>>> and get a different interpreter for different phases. Looks like that
>>> %ENV setting won't be seen by the other interpreter.
>>
>>
>>
>> yup, but that's true about a few things, right?
>
>
> I'm not sure there are any, we don't have any tests to prove and
> disaprove that.
>
>>> Your above patch is fine Geoff, but it just looks like a big waste to
>>> me, if someone just wants to add a single pair to %ENV. Otherwise it's
>>> not needed, I think (it should be enough to call it once per request).
>>> May be we need a different API, like I suggest below, just for that
>>> purpose?
>>
>>
>>
>> I don't see that as the point. now, calling $r->subprocess_env in a void
>> context has two effects: it adds standard CGI variables _and_
>> subprocess_env
>> variables to %ENV. but whoever calls it first blocks later
>> subprocess_env
>> entries from making it to %ENV, even if a later handler wants to force
>> the
>> issue with a void call.
>>
>> so, really what we have is that a void call is _guaranteed_ to
>> populate CGI
>> variables, and will _sometimes_ pass on subprocess_env entries. to
>> me, the
>> inconsistency warrants being able to call subprocess_env in a void
>> context
>> more than once, letting several modular handlers control what data
>> they want
>> in %ENV.
>
>
> Sure, I'm convinced now. Gor for it, Geoff.
>
>> the more that I think about it, the more I think we ought to postpone
>> %ENV
>> population until just before the content handler callback is run - since
>> handlers have access to $r->subprocess_env and you can't hook normal perl
>> into any other phases, setting things up just prior to content generation
>> should be quite sufficient. I think this was the general
>> understanding of
>> the old PerlSetupEnv anyway - that it was for setting up %ENV for
>> Registry
>> scripts.
>
>
> That sounds reasonable to me. So you suggest to move this into the
> response handler? (twice once perl-script and the other modperl)
>
> __________________________________________________________________
> Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
> http://stason.org/ mod_perl Guide ---> http://perl.apache.org
> mailto:stas@stason.org http://use.perl.org http://apacheweek.com
> http://modperlbook.org http://apache.org http://ticketmaster.com
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org
Re: [MP2] Problem in retrieving additional environment variables
Posted by Geoffrey Young <ge...@modperlcookbook.org>.
terribly sorry about that - there was nothing in that last email. my finger
slipped...
--Geoff
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org