Re: Varying session behavior between 2 nearly identical Apache/PHP setups

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Just to be sure...

You've double-checked that page setup code isn't somehow triggering an
ini_set('session.use_trans_id') or other session parameters, right?

I'd also examine any kind of code that is supposed to do something
"different" for the dev/production environment.

Inevitably, there ends up being *SOME* kind of #ifdef in there that
does some configuration thing in dev server to connect to different db
or whatever...

On Tue, December 12, 2006 3:17 pm, Matthew North wrote:
> Hello All,
>
> I have an odd situation that I wonder if someone might have some
> insight on.  The scenario is this:
>
> - Two FreeBSD systems running Apache+mod_php+others.  We use one for
> development and the other for testing.
>
> - Each system is running PHP 5.2.0 with identical php.ini files.
>
> - On each system we have identical PHP code (confirmed to be identical
> by comparing cksum output) that looks essentially like this:
>
> === snip ===
> <?php
> .
> . [page setup code]
> .
> trigger_error('['.session_id().']');
> if (needSession && !session_id())
>     session_start();
> trigger_error('['.session_id().']');
> .
> . [page output code]
> .
> ?>
> === snip ===
>
> Errors are logged to file rather than the page, so the trigger_error()
> calls above result in entries similar to:
>
> [08-Dec-2006 16:59:23] PHP Notice:  [] in /path/to/file.php on line
> 178
>
> [08-Dec-2006 16:59:23] PHP Notice: [GmQidWwShpRpHCGDiQrBr-Lk4ib] in
> /path/to/file.php on line 181
>
> So it appears a session is started.
>
> However, on the test system a session cookie is never sent back to the
> browser so the session cannot be restored, while on the development
> system everything works as it should (session cookie is set and
> session is therefore restored on each page load).
>
> Using 'wget -S', here are the response headers sent by the development
> system:
>
> $ wget -S http://dev/ajax/shopping_list.php\?action=add\&SKU=ABC
> --15:48:41--  http://dev/ajax/shopping_list.php?action=add&SKU=ABC
>            => `shopping_list.php?action=add&SKU=ABC.1'
> Resolving dev... 192.168.0.30
> Connecting to dev|192.168.0.30|:80... connected.
>   HTTP/1.1 200 OK
>   Date: Mon, 11 Dec 2006 23:48:41 GMT
>   Server: Apache/2.2.3 (FreeBSD) mod_ssl/2.2.3 OpenSSL/0.9.7e-p1 DAV/2
> PHP/5.2.0 with Suhosin-Patch mod_ruby/1.2.5 Ruby/1.8.5(2006-08-25)
> SVN/1.4.2
> mod_jk/1.2.15
>   X-Powered-By: PHP/5.2.0
>   Set-Cookie: PHPSESSID=WJ33PpO,nphiPAVxrbrWrQEnO5a; path=/
>   Expires: Thu, 19 Nov 1981 08:52:00 GMT
>   Cache-Control: no-store, no-cache, must-revalidate, post-check=0,
> pre-check=0
>   Pragma: no-cache
>   Content-Length: 103
>   Keep-Alive: timeout=15, max=100
>   Connection: Keep-Alive
>   Content-Type: application/xml
> Length: 103 [application/xml]
>
>
> And on the live server:
>
>
> $ wget -S http://test/ajax/shopping_list.php\?action=add\&SKU=ABC
> --15:48:26--  http://test/ajax/shopping_list.php?action=add&SKU=ABC
>            => `shopping_list.php?action=add&SKU=ABC'
> Resolving test... 192.168.0.31
> Connecting to test|192.168.0.31|:80... connected.
> HTTP request sent, awaiting response...
>   HTTP/1.1 200 OK
>   Date: Mon, 11 Dec 2006 23:48:26 GMT
>   Server: Apache/2.0.59 (Unix) mod_ssl/2.0.59 OpenSSL/0.9.7e-p1
> SVN/1.3.2
> PHP/5.2.0 DAV/2
>   X-Powered-By: PHP/5.2.0
>   Content-Length: 103
>   Keep-Alive: timeout=15, max=100
>   Connection: Keep-Alive
>   Content-Type: application/xml
> Length: 103 [application/xml]
>
>
> No session cookie!  Note that the bodies of these two responses are
> identical as determined using diff.  Also note that we have other sets
> of code on the test system which call session_start(), and a session
> cookie _is_ set, as it should be, and everything works fine.  So it's
> not simply that the session module is broken or mis-configured on the
> test machine.  Under most circumstances sessions work fine on both
> systems.  This implies that there is something specific about the code
> that is running in the [page setup code] and/or [page output code]
> (refer to snippet above) that is causing session_start() to behave
> unusually.  But again, the PHP code is identical, so it must be the
> code *in combination with* some other external difference between the
> two systems.
>
> The only differences between the two systems that could conceivably
> make sense (to my mind) in terms of this differing behavior are:
> Apache 2.0.59 and no Suhosin patch on the test machine, vs Apache
> 2.2.3 _with_ Suhosin patch on the development system (and I mention
> Suhosin only because it makes some cookie-related changes).  There are
> other differences, but none that would appear that they should have
> this effect.  Here are the configure commands used for each system:
>
> test system:
> =======
> './configure' '--with-mysql=/usr/local/mysql'
> '--with-pgsql=/usr/local/pgsql'
> '--with-gettext' '--with-xml' '--with-imap' '--with-imap-ssl'
> '--with-pspell'
> '--with-zlib' '--with-zlib-dir=/usr' '--with-bz2' '--with-ndbm'
> '--enable-dba'
> '--with-gd' '--enable-gd-native-ttf' '--with-freetype-dir=/usr/local'
> '--with-jpeg-dir=/usr/local' '--with-tiff-dir=/usr/local'
> '--with-png-dir=/usr/local' '--with-tidy' '--with-openssl'
> '--enable-sysvsem'
> '--enable-sysvshm' '--enable-dbase' '--enable-ftp'
> '--enable-memory-limit'
> '--enable-inline-optimization' '--disable-debug'
> '--with-apxs2=/usr/local/apache2/bin/apxs' '--prefix=/usr/local/php'
> '--with-config-file-path=/usr/local/php'
>
> development system:
> ============
> './configure' '--enable-versioning' '--enable-memory-limit'
> '--with-layout=GNU'
> '--with-config-file-scan-dir=/usr/local/etc/php' '--disable-all'
> '--enable-libxml' '--with-libxml-dir=/usr/local' '--enable-reflection'
> '--enable-spl' '--program-prefix=' '--disable-path-info-check'
> '--with-apxs2=/usr/local/sbin/apxs' '--with-regex=php'
> '--with-zend-vm=CALL'
> '--prefix=/usr/local'
>
> I acknowledge that these aren't particularly similar, but they do not
> differ in any way that should cause this difference in behavior (do
> they?).
>
> The PHP modules loaded match between the two systems, with the
> exception of tidy which is enabled on the test machine and not enabled
> on the development system.
>
> And again, php.ini are identical between the systems.
>
> What could explain this difference in behavior?
>
>
> Thanks,
>
> Matthew H. North
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some starving artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux