Ok, I figured out what's happening....but not how to fix yet :)-
Each of my web server processes seems to have a different EMBPERL_SESSION_ARG
value...globally...in fact I think each Embperl Env I set is unique to each process.
I added a print out of the pid ($$) to the bottom of each page, and each time the
session ID changed, so did the PID.
Then, checking the logs I see that the PID that I see on my screen (keep in mind I am
getting the proper HTML output) is NOT in the log that corresponds to the site I
requested...it's in the other site.
So, I restarted apache and went to each site once...and recorded what PID was in each
log...each log held a different PID...not one PID showed up in both logs!
I then refreshed on "other.domain2.com" for awhile until the ID changed.
Lo and behold I hit a PID that only showed up in the Clients log file! Yet the
EMBPERL_SESSION_ARGS (and every other ENV output, and other Embperl debug output, like
what file it processed, etc) is _correct_ for the site I wanted, yet the ID was
written into the Client's database (and log). So it seems that the
EMBPERL_SESSION_ARG is being ignore for the virtual for some reason...whatever the PID
handled _first_ sticks...even though the debug output reflects the proper output.
Now to figure out why that is! :)
Bill
On Fri, 16 Mar 2001, goEbusiness.com Mail Lists wrote:
> Another interesting find.
>
> I just went to clients.domain.com
>
> Refreshed a few times, access other.domain2.com, then went back to
>clients.domain.com and BAM...the session changed. The new ID that should be in the
>clients database, was actually in other.domain2.com's database.
>
> I had added EMBPERL_DEBUG 16 to each virtual and logged each virtual to a separate
>log file.
>
> So, I check the clients.domain.com log, and do not see the request in there.
>
> However, it is in the other.domain2.com log! It's really weird through, because key
>ENV settings show that I actually requested clients.domain.com....yet Apache or
>something interpreted it as other.domain2.com (or at least logged it in that
>Virtual's log file)...yet I got the proper HTML output from clients.domain.com.
>
> Here's the log, I went to clients.domain.com, yet it shows up in the log for
>other.domain2.com!!!
>
> [18479]ENV: EMBPERL_LOG=/tmp/embperlClients.log
>
> Yet it showed up in the embperlOther.log file!
>
> Could this possibly be a Apache/ModPerl problem?
>
> Here's the entire snapshot of that request:
>
> [18479]MEM: Load /disk1/www/Clients/index.epl in HTML::Embperl::DOC::_3
> [18479]CACHE: New File for '/disk1/www/Clients/index.epl' (4b6580) in
>'HTML::Embperl::DOC::_3' hash cache-key '/disk1/www/Clients/index.epl'
> [18479]REQ: Embperl 1.3.1 starting... Fri Mar 16 16:15:59 2001
> [18479]REQ: No Safe Eval All Opcode allowed mode = mod_perl (3)
> [18479]REQ: Package = HTML::Embperl::DOC::_3
> [18479]ENV: EMBPERL_SESSION_CLASSES=MySQL MySQL
> [18479]ENV: QUERY_STRING=
> [18479]ENV: SERVER_ADDR=192.168.1.11
> [18479]ENV: HTTP_ACCEPT_LANGUAGE=en-us
> [18479]ENV: SERVER_PROTOCOL=HTTP/1.1
> [18479]ENV: TZ=US/Eastern
> [18479]ENV: HTTP_CONNECTION=Keep-Alive
> [18479]ENV: SERVER_SIGNATURE=<ADDRESS>Apache/1.3.14 Server at clients.domain.com
>Port 80</ADDRESS>
>
> [18479]ENV: PATH_TRANSLATED=/disk1/www/Clients/index.epl
> [18479]ENV: REMOTE_PORT=4949
> [18479]ENV: HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
> [18479]ENV: HTTP_ACCEPT=*/*
> [18479]ENV: HTTP_HOST=clients.domain.com
> [18479]ENV: GATEWAY_INTERFACE=CGI-Perl/1.1
> [18479]ENV: SERVER_SOFTWARE=Apache/1.3.14 (Unix) PHP/4.0.4pl1 mod_perl/1.24
>mod_ssl/2.7.1 OpenSSL/0.9.6
> [18479]ENV: [EMAIL PROTECTED]
> [18479]ENV: REMOTE_ADDR=192.168.1.125
> [18479]ENV: EMBPERL_COOKIE_PATH=/
> [18479]ENV: SCRIPT_NAME=/index.epl
> [18479]ENV: SERVER_NAME=clients.domain.com
> [18479]ENV: HTTP_ACCEPT_ENCODING=gzip, deflate
> [18479]ENV: DOCUMENT_ROOT=/disk1/www/Clients
> [18479]ENV: EMBPERL_LOG=/tmp/embperlClients.log
> [18479]ENV: REQUEST_URI=/
> [18479]ENV: MOD_PERL=mod_perl/1.24
> [18479]ENV: EMBPERL_SESSION_ARGS=DataSource=dbi:mysql:database UserName=username
>Password=password LockDataSource=dbi:mysql:database LockUserName=username
>LockPassword=password
> [18479]ENV: REDIRECT_STATUS=200
> [18479]ENV: HTTP_COOKIE=EMBPERL_UID=7ef39459a818cb4f962a52b69546796e
> [18479]ENV: EMBPERL_COOKIE_DOMAIN=.domain.com
> [18479]ENV: REQUEST_METHOD=GET
> [18479]ENV: SCRIPT_FILENAME=/disk1/www/Clients/index.epl
> [18479]ENV: REDIRECT_URL=/
> [18479]ENV: EMBPERL_OPTIONS=16
> [18479]ENV: EMBPERL_DEBUG=16
> [18479]ENV:
>PATH=/:.:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/ccs/bin:/usr/local/perl/bin:/usr/local/mysql/bin:/usr/u
> cb
> [18479]ENV: SERVER_PORT=80
> [18479]Formdata... length = 0
>
>
> On Fri, 16 Mar 2001, goEbusiness.com Mail Lists wrote:
>
> > Sorry...made a typo :)
> >
> > Should be
> >
> > clients.domain.com
> >
> > and
> >
> > other.domain2.com
> >
> > So the line
> >
> > > > If I go to other.domain.com, I see the correct session cookie in their
>database/table.
> >
> > should read
> >
> > > > If I go to other.domain2.com, I see the correct session cookie in their
>database/table.
> >
> > I realize the cookies would overwrite themselves :) I made a typo.
> >
> > However, adding the COOKIE_DOMAIN value to set the cookies appart does set the
>cookies properly, however the sessions DB table is still written to incorrectly. In
>any case, it's a moot point cuz even if I don't have that, it's set to whatever I
>have set as the ServerName in the VirtualHost config.
> >
> > Bill
> >
> > On Fri, 16 Mar 2001, ___cliff rayman___ wrote:
> >
> > > your example and your text do not match! see inline comments.
> > >
> > > "goEbusiness.com Mail Lists" wrote:
> > >
> > > > If I have more than one VirtualHost setup to use Embperl sessions, randomly
>the session data for one site will be lost, and then a new cookie will be set (proper
>name, etc) but to the OTHER VIRTUAL HOSTS's Session table!
> > > >
> > > > Each session table is on a different database (one database per VirtualHost in
>these examples)
> > > >
> > > > I have enabled the DEBUG to look at the ENV, and for each request, the
>environment is set properly (ie if I go to clients.domain.com I see the SESSION_ARGS
>I set for that VirtualHost in the log, and also if I print it out from my Embperl
>processed page)
> > > >
> > > > I've tried putting the PerlSetEnv settings in just the <VirtualHost> tags,
>moved Directory in/out of VirtualHost...same problem.
> > > >
> > > > The first connection works fine, say if I got to clients.domain.com, I see the
>correct session ID in their database.
> > > >
> > > > If I go to other.domain.com, I see the correct session cookie in their
>database/table.
> > >
> > > if you use other.domain.com and clients.domain.com, then you are going to have a
>problem with a cookie
> > > domain of ".domain.com". the cookie from clients.domain.com will be offered to
>other.domain.com which of
> > > course has no record of it, and then delivers its own fresh cookie.
> > >
> > > >
> > > >
> > > > But then, if I randomly use other browsers or machines, or the browsers I
>already have open, the ID will change.
> > > >
> > > >
> > > > <VirtualHost 192.168.1.11>
> > > > DocumentRoot /disk1/www/Clients
> > > > ServerName clients.domain.com
> > > > <Directory "/disk1/www/Clients">
> > > > <Files *.epl>
> > > > SetHandler perl-script
> > > > PerlHandler HTML::Embperl
> > > > Options +ExecCGI
> > > > PerlSetEnv EMBPERL_OPTIONS 16
> > > > PerlSetEnv EMBPERL_COOKIE_DOMAIN ".domain.com"
> > > > PerlSetEnv EMBPERL_COOKIE_PATH "/"
> > > > PerlSetEnv EMBPERL_SESSION_CLASSES "MySQL MySQL"
> > > > PerlSetEnv EMBPERL_SESSION_ARGS "DataSource=dbi:mysql:database
>UserName=username Password=password LockDataSource=dbi:mysql:database
>LockUserName=username LockPassword=password"
> > > > </Files>
> > > > </Directory>
> > > > </VirtualHost>
> > > >
> > > > <VirtualHost 192.168.1.11>
> > > > DocumentRoot /disk1/www/Other
> > > > ServerName other.domain2.com
> > > > <Directory "/disk1/www/Other">
> > > > <Files *.html>
> > > > SetHandler perl-script
> > > > PerlHandler HTML::Embperl
> > > > Options +ExecCGI
> > > > PerlSetEnv EMBPERL_OPTIONS 16
> > > > PerlSetEnv EMBPERL_COOKIE_PATH "/"
> > > > PerlSetEnv EMBPERL_COOKIE_DOMAIN ".domain2.com"
> > >
> > > this of course would work, because the COOKIE_DOMAIN is different. you need to
> > > examine the actual hostnames and the COOKE_DOMAIN values you have for each of
> > > them.
> > >
> > > hth,
> > >
> > > --
> > > ___cliff [EMAIL PROTECTED]http://www.genwax.com/
> > >
> > >
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]