Bug #76804 [Com]: oci_pconnect with OCI_CRED_EXT not working.
| From: | php at koenigskind dot net | Date: | Tue, 04 Sep 2018 17:31:13 +0000 |
| Subject: | Bug #76804 [Com]: oci_pconnect with OCI_CRED_EXT not working. | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-216879@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=76804&edit=1
ID: 76804
Comment by: php at koenigskind dot net
Reported by: dave dot reddy at enbridge dot com
Summary: oci_pconnect with OCI_CRED_EXT not working.
Status: Open
Type: Bug
Package: OCI8 related
Operating System: AIX 7.1
PHP Version: 7.2.9
Block user comment: N
Private report: N
New Comment:
Pull request: https://github.com/php/php-src/pull/3491
Previous Comments:
------------------------------------------------------------------------
[2018-08-27 20:18:46] dave dot reddy at enbridge dot com
OCI8 2.1.8 (as downloaded with php)
32 bit Oracle client.
32 bit build of PHP-FPM
------------------------------------------------------------------------
[2018-08-27 20:13:36] dave dot reddy at enbridge dot com
Description:
------------
oci_pconnect using clear text credentials works as expected.
oci_pconnect using OCI_CRED_EXT (Oracle Wallets) works only for the first PHP script run by a PHP
FastCGI (php-fpm) child process. The second script run by the child process will think it finds a
valid database connection, but the resource type is incorrect and nothing works.
In the first script run, the resource returned by oci_pconnect has a resource type of "oci8
persistent connection".
In subsequent scripts run by the same child fpm process, the resource type is "unknown",
the data type is shown as "resource (closed)".
Test script:
---------------
<?php
$sql = "select to_char(sysdate, 'dd-Mon-yyyy hh24:mi:ss') \"DATE\" from
dual";
echo "Connection Test 1\n";
// You'll need to setup an Oracle Wallet for the credentials
$conn = oci_pconnect("/", "", "DEV9_DASHBOARD", null, OCI_CRED_EXT);
print_r(gettype($conn));
echo "\n";
print_r(get_resource_type($conn));
echo "\n";
if ($conn === false) {
echo "Connection dead\n";
} else {
$stmt = oci_parse($conn, $sql);
if ($stmt === false) {
echo "oci_parse returns FALSE\n";
} else {
oci_execute($stmt);
$row = oci_fetch_array($stmt, OCI_ASSOC+OCI_RETURN_NULLS);
var_dump($row);
sleep(1);
}
}
?>
Expected result:
----------------
Expected Results (this is the result the first time script is executed)
Connection Test 1
resource
oci8 persistent connection
array(1) {
["DATE"]=>
string(20) "27-Aug-2018 15:09:26"
}
Actual result:
--------------
When the fpm child process runs the same script a 2nd or subsequent time, the following results.
Connection Test 1
resource (closed)
Unknown
Warning: oci_parse(): supplied resource is not a valid oci8 connection resource in
/website205/PHPTEST/webapps/php/util/testoci.php on line 22
oci_parse returns FALSE
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=76804&edit=1