ID: 38161
Comment by: cjbj at hotmail dot com
Reported By: a dot bodemer at brillux dot de
Status: Feedback
Bug Type: OCI8 related
Operating System: Linux x86
PHP Version: 5.1.4
New Comment:
Tony you shouldn't need a stack dump for this. Just try a
var_dump($returnValue) at the end of the script. Because no value has
been returned in the variable it is being treated as a 64K string and
printing garbage.
The workaround for users is to make sure that the PL/SQL block always
sets variable values in all possible code paths. Something like:
$query= "declare
n_status NUMBER(2);
begin
:retValue := 0; -- set default value
n_status := 1 ;
IF :n_status = 0 THEN
:retValue := :n_status;
END IF;
end;";
Previous Comments:
------------------------------------------------------------------------
[2006-07-20 15:48:02] [EMAIL PROTECTED]
Thank you for this bug report. To properly diagnose the problem, we
need a backtrace to see what is happening behind the scenes. To
find out how to generate a backtrace, please read
http://bugs.php.net/bugs-generating-backtrace.php for *NIX and
http://bugs.php.net/bugs-generating-backtrace-win32.php for Win32
Once you have generated a backtrace, please submit it to this bug
report and change the status back to "Open". Thank you for helping
us make PHP better.
------------------------------------------------------------------------
[2006-07-20 15:05:00] a dot bodemer at brillux dot de
The SampleCode produce in php5.2-200607190630 the same result, a memory
dump.
In all Testcases the script run without a PHP Error message or a
'Segmentation Failure'.
------------------------------------------------------------------------
[2006-07-20 14:18:03] [EMAIL PROTECTED]
Please try using this CVS snapshot:
http://snaps.php.net/php5.2-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5.2-win32-latest.zip
------------------------------------------------------------------------
[2006-07-20 14:16:20] a dot bodemer at brillux dot de
Description:
------------
Hallo,
we use a Linux/Apache/Oracle/PHP on a X86 system.
We tested the Codesample on PHP 5.1.4 with Oracle 8.1/10.1 and Apache
2.0.46/2.0.58. Every times the same result, a memory dump from the
current apache.
Reproduce code:
---------------
<?php
$query= "declare
n_status NUMBER(2);
begin
n_status := -1 ;
IF :n_status = 0 THEN
:retValue := :n_status;
END IF;
end;";
$conn = OCILogon("wws", "wws", "zente");
$stmt = OCIParse($conn, $query);
OCIBindByName($stmt, ":retValue", $returnValue,50);
OCIBindByName($stmt, ":n_status", $n_status,50);
$ret=OCIExecute($stmt);
print "\n<pre><br>OCIExecute() ret=$ret";
print "\n<br> Return Value=".$returnValue;
?>
Expected result:
----------------
The return value must be NULL.
Actual result:
--------------
The result is a memory dump from the current apache.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=38161&edit=1