ID: 14566 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open Bug Type: Session related Operating System: Solaris 7 PHP Version: 4.1.0 New Comment:
Hi [EMAIL PROTECTED]: My problem is the same. I seem to be able to set the vars, but then when trying to unset them, or change them, in other pages, they refuse to change. I have tried unsuccessfully to unset session vars using: unset($_SESSION[foo]); Using Solaris 8/PHP 4.1.1/Apache 1.23/Sessions saved in /tmp I have this in my php.ini: session.auto_start = 1 All other values are default values. Jorge Previous Comments: ------------------------------------------------------------------------ [2002-01-16 11:57:58] [EMAIL PROTECTED] The workaround to use $_SESSION['var'] is not viable right now as most places we use the global $var to access the variable and there is too much code to change this immediately. In trying to set the global $var =& $_SESSION['var'] on one of the variables that has a problem, it seems that the reference is still being lost by something in PHP 4.1.1 (still tracking by what) which did not lose the reference in PHP 4.0.6. We are using a user save handler and have checked that it is saving what it receives into the database. ------------------------------------------------------------------------ [2002-01-14 22:03:31] [EMAIL PROTECTED] BTW, my last comment works for you? To register, $_SESSION['var'] = 1234; To unregister unset($_SESSION['var']); What is your session save handler? files/mm/user/other? ------------------------------------------------------------------------ [2002-01-14 12:42:17] [EMAIL PROTECTED] I get the same problem on Solaris 8. Code that worked fine in PHP 4.0.6 does not work anymore with 4.1.1: - new vars are registered correctly into the session - already defined session vars cannot be modified My register_globals setting is on. ------------------------------------------------------------------------ [2002-01-06 22:20:20] [EMAIL PROTECTED] This comment is work around for the bug. Do not use session_register(), but use only $HTTP_SESSION_VARS or $_SESSION to register/unregister session vars. To register, $_SESSION['var'] = 1234; To unregister unset($_SESSION['var']); Then your script should work. ------------------------------------------------------------------------ [2001-12-18 12:55:34] [EMAIL PROTECTED] register_globals is on. I have been trying to narrow everything down to a simple test case, but have not yet been able to. It now appears that something acts differently in 4.1.0 that changes the reference of the global variable to something different than the HTTP_SESSION_VARS[] variable which did not do so in 4.0.6. A workaround is to set HTTP_SESSION_VARS[varname] =& GLOBALS[varname] before the end of the script. ------------------------------------------------------------------------ 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/14566 -- Edit this bug report at http://bugs.php.net/?id=14566&edit=1