Thanks you for report :)
Could you apply attached patch. It should fix the problem.
Please let me know if this patch fixed it or not.
--
Yasuo Ohgaki
php-jp@typhoon.co.jp wrote:
> ID: 13078> User updated by: php-jp@typhoon.co.jp> Reported By: php-jp@typhoon.co.jp> Status: Critical> Bug Type: Session related> Operating System: FreeBSD 4.x> PHP Version: 4.0.6, 4.1.0> New Comment:> > Sorry, but further testing revealed when sess_read> > return NULL;> > for when nothing was found caused problems sometimes, not always!> > However> > return '';> > seems to work all of the time! > > Looks like sess_write has to return a '' (null string) It cannot return NULL, nor it
> return false;> > Otherise sess_write will never be called!> ---ends---> > Previous Comments:> ------------------------------------------------------------------------> > [2001-12-14 00:19:21] php-jp@typhoon.co.jp> > Problem solved in 4.1.0 (release).> > All thanks to yohgaki@php.net for pointing me to his very well written code!> > I found the reason my sess_write was never called with register_globals = off was because my
> sess_read function was something like this:> > sess_read( $key)> ...> if I find stuff for $key from PostgreSQL {> return $valuesfound;> }> else {> return false;> }> > The problem was with "return false;"> After changing:> > return false;> > to> return NULL;> > things worked.> > Don't know why the "return false" worked with "register_globals=on"
> and "register_global=off" requires sess_read to return NULL if nothing was found...> > THANKS again to yohgaki@php.net for his code and my apologise for wasting people's time.> > Please feel free to close this bug report. I am not closing it because derick@php.net brought
> up something which I don't know about nor can I duplicate. > ---ends---> > > > ------------------------------------------------------------------------> > [2001-12-13 22:04:18] sniper@php.net> > Just to note that I can not reproduce this with latest CVS.> > --Jani> > > ------------------------------------------------------------------------> > [2001-12-13 05:55:59] derick@php.net> > PHP 4.1.0 (release)> > TEST SCRIPT:> <?php> session_start();> $_SESSION['test'] = 'YES';> echo ini_get('register_globals');> ?>> > SESSION FILE CONTENTS:> > With register_globals = 1:> <empty>> > With register_globals = 0:> test|s:3:"YES";> > ------------------------------------------------------------------------> > [2001-12-13 05:14:14] php-jp@typhoon.co.jp> > Yes, I have problems with or without session_register/unregister.> > In fact, I first tried:> > $_SESSION["varname"] = "somevaluehere";> > to see if it was saved. But it was NOT. So, I tried this:> > session_register("varname");> $_SESSION["varname"] = "somevaluehere";> > thinking it would help. Anyhow, none of the above worked. > > Once again, if > > register_globals=on> > then, everything is fine.> ---ends---> > ------------------------------------------------------------------------> > [2001-12-13 04:52:52] yohgaki@php.net> > When you use $_SESSION or $HTTP_SESSION_VARS, you don't need session_register/unregister
> to save session vars.> Do you have problem still when you don't use session_register/unregister?> > > ------------------------------------------------------------------------> > The remainder of the comments for this report are too long. To view> the rest of the comments, please view the bug report online at> http://bugs.php.net/?id=13078> > > Edit this bug report at http://bugs.php.net/?id=13078&edit=1> > --
Yasuo Ohgaki