ID: 34542 Updated by: [EMAIL PROTECTED] Reported By: marcus dot uy at virtualthinking dot com -Status: Open +Status: Bogus Bug Type: Session related Operating System: ALL PHP Version: 5.1.0RC4, 5.2.0 New Comment:
Yes, $_SESSION is special. RTM: http://www.php.net/session Previous Comments: ------------------------------------------------------------------------ [2007-07-25 04:54:02] marcus dot uy at virtualthinking dot com Hi, I have resolved this issue. It's not that the long arrays that is broken, but that $_SESSION has some unexpected behaviours. It turns out that $_SESSION is NOT really a normal array. If you assign a bunch of values to $_SESSION as an array, e.g.: $_SESSION = array ("value1", "value2", "value3"); It destroy's the "magic" of $_SESSION and session becomes a standard array (that vanishes on script exit), thus it does not save settings as expected. There have been some similar complaints in other bug reports. The discussion breaks down into two camps: 1. This is a feature, so don't allocate the array 2. This fails the test of "least surprise", behaviour should be "corrected" Ah well, it works now, and I know why, so that's what matters. ------------------------------------------------------------------------ [2006-12-05 15:37:58] [EMAIL PROTECTED] >Like on Windows, "register_long_arrays=On" causes the > described problem with the session too. No, it doesn't. With register_long_arrays=On I get the same result, as with Off. It works perfectly fine. I guess you have some kind of broken browser and/or some combination of Apache modules or PHP/Zend extensions, which cause it. By the way, you didn't answer my question on zend_extensions. ------------------------------------------------------------------------ [2006-12-05 15:12:33] marcus dot uy at virtualthinking dot com Just a quick update. A correction on the Linux settings. Like on Windows, "register_long_arrays=On" causes the described problem with the session too. My bad. Did not notice that the option was commented out. ------------------------------------------------------------------------ [2006-11-29 12:15:40] marcus dot uy at virtualthinking dot com mod_security removed. Behaviour of PHP is still the same as my previous post. I have tested the same php.ini file on a separate linux server (with path names adjusted for linux) that I own and it works with register_long_arrays=off in the expected manner as documented. The same settings on windows fail to work as noted earlier. I cannot verify this, but is there some internal reference or dependency in the session subsystem that uses the old long array vars/buffer as the input source for the data that is written to the session file? Hence: $_SESSION => can show up during the run ...but... $HTTP_SESSION_VAR => written to disk, and thus empty Any chance? Was discussing fault scenarios with a friend and this came up as a plausible case that would result in this kind of oddity (a difference in how the windows and linux compilers work might account for the difference in behaviour on different platforms???). ------------------------------------------------------------------------ [2006-11-29 10:08:15] [EMAIL PROTECTED] First of all, please remove/disable mod_security. ------------------------------------------------------------------------ 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/34542 -- Edit this bug report at http://bugs.php.net/?id=34542&edit=1