ID: 27696
User updated by: gioppo at csi dot it
Reported By: gioppo at csi dot it
-Status: Feedback
+Status: Open
Bug Type: OCI8 related
Operating System: System Linux 2.2.19-6.2.1
PHP Version: Irrelevant
Assigned To: tony2001
New Comment:
We cannot, it's a production environment and we cannot change version.
:-(
Previous Comments:
------------------------------------------------------------------------
[2004-03-31 02:12:23] tony2001@php.net
I can't reproduce it neither with PHP4, nor with PHP5.
Have you tried latest versions?
------------------------------------------------------------------------
[2004-03-31 01:22:48] gioppo at csi dot it
Well I think that I've found a workaround.
To test it you can take the code from:
http://php.weblogs.com/adodb
and try a simple connection.
In any case you can try to see what happens if someone compile the
php+OCI using a symbolic link for oracle_home and than uses an absolute
oracle_home.
There could be a bug.
------------------------------------------------------------------------
[2004-03-30 10:03:27] tony2001@php.net
So, you've solved it, yes?
This piece of code didn't help me much, just because I can't test it.
------------------------------------------------------------------------
[2004-03-30 09:05:14] gioppo at csi dot it
We probably solved the problem bypassing tnsnames.ora.
We made the connection using tnsnames defined alias and it got errors
sometime.
Here is a chunk of php code (we used method b which gave errors
sometime, when we used d mode we always manage to make connection) any
hint? A problem on finding tnsnames?
NOTE OCILogon is a php library function so no hint on how to modify it,
but the behaviour meke me think about an environment problem:
we have a
Compile-time ORACLE_HOME /oracle_home for compiling OCI for php
but
ORACLE_HOME /oracle817/app/oracle/product/8.1.7
_ENV["ORACLE_HOME"] /oracle817/app/oracle/product/8.1.7
on env for apache and php (/oracle_home is a symbolic link to the
/oracle817/app/oracle/product/8.1.7 folder) could be that the OCI8 so
compiled have trouble on traversing the link?
/*
Multiple modes of connection are supported:
a. Local Database
$conn->Connect(false,'scott','tiger');
b. From tnsnames.ora
$conn->Connect(false,'scott','tiger',$tnsname);
$conn->Connect($tnsname,'scott','tiger');
c. Server + service name
$conn->Connect($serveraddress,'scott,'tiger',$service_name);
d. Server + SID
$conn->connectSID = true;
$conn->Connect($serveraddress,'scott,'tiger',$SID);
Example TNSName:
---------------
NATSOFT.DOMAIN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = kermit)(PORT = 1523))
)
(CONNECT_DATA =
(SERVICE_NAME = natsoft.domain)
)
)
There are 3 connection modes, 0 = non-persistent, 1 = persistent, 2 =
force new connection
*/
function _connect($argHostname, $argUsername, $argPassword,
$argDatabasename,$mode=0)
{
$this->_errorMsg = false;
$this->_errorCode = false;
if($argHostname) { // added by Jorma Tuomainen
<jorma.tuomainen@ppoy.fi>
if (empty($argDatabasename)) $argDatabasename = $argHostname;
else {
if(strpos($argHostname,":")) {
$argHostinfo=explode(":",$argHostname);
$argHostname=$argHostinfo[0];
$argHostport=$argHostinfo[1];
} else {
$argHostport="1521";
}
if ($this->connectSID) {
$argDatabasename="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=".$argHostname
.")(PORT=$argHostport))(CONNECT_DATA=(SID=$argDatabasename)))";
} else
$argDatabasename="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=".$argHostname
.")(PORT=$argHostport))(CONNECT_DATA=(SERVICE_NAME=$argDatabasename)))";
}
}
if ($mode==1) {
$this->_connectionID = OCIPLogon($argUsername,$argPassword,
$argDatabasename);
if ($this->_connectionID && $this->autoRollback)
OCIrollback($this->_connectionID);
} else if ($mode==2) {
$this->_connectionID = OCINLogon($argUsername,$argPassword,
$argDatabasename);
} else {
$this->_connectionID = OCILogon($argUsername,$argPassword,
$argDatabasename);
}
if ($this->_connectionID === false) return false;
------------------------------------------------------------------------
[2004-03-26 05:00:13] tony2001@php.net
Please, try latest stable PHP release.
And try latest PHP5 snapshot, there are a lot of changes since
November.
I have no idea what code ADO uses to connect to Oracle, so please
provide a short example with standard PHP functions, not wrapped with
ADO or other wrapper.
------------------------------------------------------------------------
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/27696
--
Edit this bug report at http://bugs.php.net/?id=27696&edit=1