Bug #72175 [Com]: Impossibility of creatiing multiple connections to Interbase with php 7.0

From: Date: Tue, 28 Jun 2016 15:35:08 +0000
Subject: Bug #72175 [Com]: Impossibility of creatiing multiple connections to Interbase with php 7.0
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-201887@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=72175&edit=1

 ID:                 72175
 Comment by:         nish dot aravamudan at canonical dot com
 Reported by:        netvicious at gmail dot com
 Summary:            Impossibility of creatiing multiple connections to
                     Interbase with php 7.0
 Status:             Open
 Type:               Bug
 Package:            InterBase related
 Operating System:   Ubuntu 16.04 LTS
 PHP Version:        7.0.6
 Block user comment: N
 Private report:     N

 New Comment:

As part of https://bugs.launchpad.net/ubuntu/+source/php7.0/+bug/1578600,
I asked users to test:

--- php7.0-7.0.8.orig/ext/interbase/interbase.c
+++ php7.0-7.0.8/ext/interbase/interbase.c
@@ -939,7 +939,7 @@ static void _php_ibase_connect(INTERNAL_
                xlink = (zend_resource*) le->ptr;
                if ((!persistent && xlink->type == le_link) || xlink->type ==
le_plink) {
                        if (IBG(default_link)) {
-                               zend_list_close(IBG(default_link));
+                               zend_list_delete(IBG(default_link));
                        }
                        xlink->gc.refcount++;
                        xlink->gc.refcount++;

And two users reported this fixed the issue for them. This was the suggestion of NikiC on SO
(http://stackoverflow.com/questions/37049534/multiple-connections-to-interbase-with-php-7-0).


Previous Comments:
------------------------------------------------------------------------
[2016-05-26 15:45:47] dregad at mantisbt dot org

A user of ADOdb library reported the same problem (see https://github.com/ADOdb/ADOdb/issues/231).

------------------------------------------------------------------------
[2016-05-09 07:23:18] netvicious at gmail dot com

Description:
------------
If you have one open link to an Interbase/Firebird database and you open **another** one to the same
database the first link it's closed.

On my php.ini I have this (exactly the same than on PHP 5.6):

    ibase.allow_persistent = 1

    ; Maximum number of persistent links. -1 means no limit.
    ibase.max_persistent = -1

    ; Maximum number of links (persistent + non-persistent). -1 means no limit.
    ibase.max_links = -1

The same script below was running perfectly on PHP 5.6

NikiC on StackOverflow writed this:
In particular, I don't think this line is correct:
lxr.php.net/xref/PHP_MASTER/ext/interbase/interbase.c#943 This zend_list_close should probably be a
zend_list_delete, otherwise it will simply always destroy the resource.

Already posted to:
http://stackoverflow.com/questions/37049534/multiple-connections-to-interbase-with-php-7-0
https://bugs.launchpad.net/ubuntu/+source/php7.0/+bug/1578600

Regards,

Test script:
---------------
// DB_xxx are defined variables with the users, password, ..... of the database.

// We have the same problem if we use ibase_pconnect or ibase_connect

$conx = ibase_connect(DB_HOST . ":" . DB_NAME,DB_USER,DB_PWD,DB_CHARACTER) or
die(ibase_errcode() . ' ' . ibase_errmsg()); 

$conx2 = ibase_connect(DB_HOST . ":" . DB_NAME,DB_USER,DB_PWD,DB_CHARACTER) or
die(ibase_errcode() . ' ' . ibase_errmsg()); 

$sql = 'SELECT something from somewhere';

$query = ibase_query($conx, $sql);

while ($row = ibase_fetch_assoc($query)) {
    echo $row['something'];
}

Expected result:
----------------
$conx should keep the database connection instead of be closed.

Actual result:
--------------
The test script should not write nothing, but on the error log you will see something like:

supplied resource is not a valid Firebird/InterBase link resource in ....

    ibase_fetch_assoc(): Dynamic SQL Error SQL error code = -504 Invalid cursor reference Cursor is
not open ....

It seems $conx has been closed when creating the $conx2 connection.


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=72175&edit=1


Thread (32 messages)

« previous php.bugs (#201887) next »