On Fri, 2003-10-17 at 13:07, Geoffrey Young wrote:
> simran wrote:
> > Hi All, 
> > 
> > I have a PerlTransHandler where i am doing something to the effect of:
> > 
> >     my $request = instance Apache::Request(shift);
> >     $request->document_root("/home/testuser/www");
> >     $request->pnotes("test_key" => "test_value");
> >     warn "Set document root to /home/testuser/www\n";
> > 
> > Then later in a PerlHandler (in the same request) i am doing:
> > 
> >   my $request  = instance Apache::Request(shift)
> >   my $root     = $request->document_root();
> > 
> >   warn "DocRoot=$root\n";
> >   my $value = $request->pnotes("test_key");
> >   warn "TEST VALUE = $value\n";
> > 
> > =====================================================================
> > 
> > In my apache error log i get:
> > 
> > *** Set document root to /home/testuser/www
> > *** DocRoot=/home/simran/www
> > *** TEST VALUE = test_value
> > 
> > (/home/simran/www was the document root before i changed it in my
> > PerlTransHandler). 
> > 
> > I'm fairly sure that i am looking at the same request object across the
> > PerlTransHandler and PerlHandler as the $r->pnotes has the key/value i
> > set (in the PerlTransHandler) still set in the PerlHandler... 
> > 
> > Can anyone advise on how i can debug this further to see what might be
> > happening... there is no other handlers between the above two (so no
> > chance of another handler changing the document root back to the
> > original again). 
> 
> yike.
> 
> try using just the passed in Apache object instead of the cached instance 
> object and see what happens.  something is definitely amuck.


Tried that... (new Apache::Request(shift)) but same result
unfortunately... 


> 
> > 
> > I am using: Apache/1.3.27 (Unix) mod_ssl/2.8.14 OpenSSL/0.9.6c DAV/1.0.3
> > mod_perl/1.28, perl 5.8.0
> > 
> > Any help greatly appreciated. 
> > 
> > simran.
> > 
> > ps: I believe (if my memory serves me right) that the above used to work
> > okay under an older version of mod_perl/apache/perl... (and have not got
> > the environment to test it in again!). 
> 
> well, sort of.  in previous versions of apache it was possible to set 
> $r->document_root.  however, any changes made to $r->document_root would 
> persist for the entire life of the child, not just the life of the current 
> request.  for that reason, you were expected to always restore the value of 
> $r->document_root to its original state.
> 
> see recipe 4.3 in the cookbook
> 
> http://www.webreference.com/programming/perl/cookbook/chap4/2.html
> http://www.modperlcookbook.org/code/ch04/Cookbook/Userdir.pm


Thanks for those... those are the exact ones i have followed. I had
mailed a question about document_root a few months ago and upon your
advice then, i had followed those exact recipes (and my code for the
most part of my subroutine is a copy/past job from the above URL's -
including the PerlCleanupHandler... )


any other ideas on how i can debug this would be greatly appreciated... 

simran.


> 
> I'm not aware of any changes in apache that would make this no longer true, 
> but you never know...
> 
> --Geoff


Reply via email to