ID: 20583 Comment by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open Bug Type: Variables related Operating System: RedHat 7.2 PHP Version: 4CVS-2002-11-22 (stable) New Comment:
Ok, this is happening in 4.3.0. It does not happen in 4.2.2. Here is some self contained code: session_start(); session_destroy(); session_start(); $r = $HTTP_REFERER; session_register( "r" ); echo "<p>r is "; var_dump($r); $z = 0; $x = 999; $y = 777; echo "<p>x is " . $x . "\n"; echo "<p>z is " . $z . "\n"; echo "<p>y is " . $y . "\n"; I get $r is NULL, and 777 for all three of $x, $y and $z from this script. Something is badly wrong. Previous Comments: ------------------------------------------------------------------------ [2003-01-23 14:00:26] [EMAIL PROTECTED] Haven't heard anything back on this bug in a while. Just wondering what the status was on this one, or if you've had any luck reproducing it with the code segment I provided. ------------------------------------------------------------------------ [2003-01-10 01:14:39] [EMAIL PROTECTED] I experienced the described problem with one of my scripts, too, since I upgraded the server to PHP 4.3.0. I use sessions, MySQL, and have cookies turned on in my browser. In my script I process post data and assign three values to session variables inside an if-statement. Changing the order in which the assignments are made (I moved the first statement after the other two) solved the problem, and all variables contain their correct values. I use Debian 3.0 (Woody), Apache 1.3.27 with statically linked PHP 4.3.0. PHP configuration: http://bigben171.wutallan.net/phpinfo.php ------------------------------------------------------------------------ [2002-12-30 10:58:02] [EMAIL PROTECTED] Well perhaps I initially reported the bug in the wrong category from the dropdown selection, since it seemed like it was a variables related problem. At this point, if I remove basically any of the lines from the code segment given above, the error goes away. So based on this, here are the three factors that I have been able to deduce are required to recreate the bug. 1) Turn off cookies 2) Use sessions 3) Use the OCI module. Basically, do everything I'm doing above in the code segment I sent you. If I could have simplified it any more, than I would have. However, the removal of any lines caused the problem to go away, which is what leads me to believe it's a combination of all three of the things I just listed. >From the sample output I gave you, you can see that it's interpretting a simple string assignment statement to the $sql variable as some sort of object/resource. This is why I reported the bug as a variables related issue, but maybe it isn't. Maybe it's all related to the OCI module and PHP sessions. Thank you. ------------------------------------------------------------------------ [2002-12-19 19:30:54] [EMAIL PROTECTED] you're focussing on the wrong issue. It should be *self-contained*. Can you still reproduce the issue, when you strip the ora_* stuff and without sessions? If not, add sessions back in, then the ora_*. >From what you're reporting: <?php $one='one'; $two='two'; print "$one $two"; ?> should result in 'one one'. If this isn't the case, then it's not a variable issue, but specific to some module. Unless we find out what module causes the behavior, there's not much we can do. ------------------------------------------------------------------------ [2002-12-19 15:25:15] [EMAIL PROTECTED] Ok, I've been able to narrow this bug down to a much simpler PHP script. We have also confirmed that it is definitely a problem with the newer version of PHP since we are running an identical script on production, with an older version of PHP, and it is error free. The following script should allow you to recreate the problem. You should disable cookies on the browser in order to have the error recreated each subsequent refresh. Otherwise, the error will only happen the first time you view the page, and will be gone on refreshes. ______________________________________________________ <? session_start(); $db_sid = "SID_VALUE"; $oralogin = "scott"; $orapass = "tiger"; $conn_ora = OCIPLogon($oralogin, $orapass, $db_sid); if (empty($_GET["view_all"])) { $_GET["view_all"] = $_SESSION["view_all"]; } $view_all = $_GET["view_all"]; session_register("view_all"); $sql = "select SOME_FIELDS_FROM_DATABASE "; if ($mgt_user_row["SUPER_USER_FLAG"] == "Y" && $_GET["view_all"] == "Y") { $sql .= "from SOME_TABLE_NAMES "; } else { $sql .= "from SOME_TABLE_NAMES "; } $another = "hello world"; $obviously_messed_up = "php"; $stmt = OCIParse($conn_ora, $sql); print "SQL = $sql<br>"; print "Another = $another<br>"; print "Obviously Messed Up = $obviously_messed_up<br>"; ?> ____________________________________________________ Output of Above Code: SQL = Resource id #3 Another = Resource id #3 Obviously Messed Up = Resource id #3 ------------------------------------------------------------------------ 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/20583 -- Edit this bug report at http://bugs.php.net/?id=20583&edit=1