Didn't get any reply yet on this, so I think i am doing something very
stupid ...

Can anyone try it and tell me if gets the same result?

Thanks,
Niraj

> -----Original Message-----
> From: Niraj Sheth [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, August 15, 2000 11:03 AM
> To: [EMAIL PROTECTED]
> Subject: RE: env in background process
> 
> 
> Follow up on this.
> 
> script1.pl(set FOO1 env)
> =======
> #!/usr/local/bin/perl
> 
> print "Content-type: text/html\n\n";
> print "PID = $$<BR>\n";
> print "SCRIPT1 with FOO1<BR>\n";
> 
> #local %ENV = %ENV;
> 
> $ENV{FOO1} = "foo1";
> print map { "$_ = $ENV{$_}<BR>\n"; } sort keys %ENV;
> 
> $command = "dump_env";
> print `$command &`; # put it in the background....
> 
> -- end
> 
> script2.pl(set FOO2 env)
> =======
> #!/usr/local/bin/perl
> 
> print "Content-type: text/html\n\n";
> print "PID = $$<BR>\n";
> print "SCRIPT1 with FOO2<BR>\n";
> 
> #local %ENV = %ENV;
> 
> $ENV{FOO2} = "foo2";
> print map { "$_ = $ENV{$_}<BR>\n"; } sort keys %ENV;
> 
> $command = "dump_env";
> print `$command &`; # put it in the background....
> 
> -- end
> 
> dump_env
> =======
> #!/usr/local/bin/perl
> 
> print "$0 @ARGV\n";
> 
> print map { "$0 $_ = $ENV{$_}<BR>\n"; } sort keys %ENV;
> 
> --end
> 
> running "httpd -X" i will get FOO1 and FOO2 both from the print
> statement of dum_env.
> while script1.pl is ONLY printing FOO1 which is correct as well as
> script2.pl is ONLY printing FOO2 which is also correct.
> 
> so why dump_env is getting both?
> If I either uncomment "local %ENV = %ENV;" in script or put 
> "%ENV = ();"
> in PerlCleanupHandler then dump_env is working fine.
> I tried both Apache::PerlRun and Apache::Registry which same result.
> 
> I would appreciate any help.
> 
> -Niraj
> 
> > -----Original Message-----
> > From: Niraj Sheth [mailto:[EMAIL PROTECTED]]
> > Sent: Monday, August 14, 2000 12:10 PM
> > To: [EMAIL PROTECTED]
> > Subject: env in background process
> >
> >
> > Hi,
> >
> > I am having very strange problem with environment variables.
> >
> > >From Apache::PerlRun script(cgi) I am setting env and firing
> > background
> > process ..
> > system("$command &") (or print `$command &`;)
> >
> > now looks like environment variable being persistence b/w different
> > requests ONLY in background process. so it's looks to me 
> that mod_perl
> 
> > is setting proper "Perl Level" env but failing to reset env
> > at "c level"
> > or "process level". I know it's sounds very weird.
> > /perl-status?env is printing correctly but my background process
> > ($command) is printing few extra env, which i set it in 
> different cgi
> > script.
> >
> > e.g. "script1.pl" is setting $ENV{foo1} = "foo1" and firing print
> > `command1 &`;
> > and "script2.pl" is setting $ENV{foo2} = "foo2" and firing print
> > `command2 &`;
> >
> > after few hits both env(foo1 and foo2) are visible to both 
> background
> > processes.
> > while /perl-status?env is displaying correctly.
> > Here command1 and command2(perl scripts) are just printing env
> >
> > Apache/1.3.9 (Unix) mod_perl/1.21
> > Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration:
> >   Platform:
> >     osname=solaris, osvers=2.6, archname=sun4-solaris
> >     uname='sunos nlsun268 5.6 generic_105181-14 sun4u sparc
> > sunw,ultra-4
> > '
> >     hint=recommended, useposix=true, d_sigaction=define
> >     usethreads=undef useperlio=undef d_sfio=undef
> >   Compiler:
> >     cc='gcc', optimize='-O', gccversion=2.8.1
> >     cppflags='-I/usr/local/include'
> >     ccflags ='-I/usr/local/include'
> >     stdchar='unsigned char', d_stdstdio=define, usevfork=false
> >     intsize=4, longsize=4, ptrsize=4, doublesize=8
> >     d_longlong=define, longlongsize=8, d_longdbl=define,
> > longdblsize=16
> >     alignbytes=8, usemymalloc=y, prototype=define
> >   Linker and Libraries:
> >     ld='gcc', ldflags =' -L/usr/local/lib'
> >     libpth=/usr/local/lib /lib /usr/lib /usr/ccs/lib
> >     libs=-lsocket -lnsl -ldl -lm -lc -lcrypt
> >     libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
> >   Dynamic Linking:
> >     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
> >     cccdlflags='-fPIC', lddlflags='-G -L/usr/local/lib'
> >
> >
> > Any comments?
> >
> > Thanks,
> > Niraj
> >
> 

Reply via email to