#26892 [Opn]: ocinewcollection fails with Oracle 9.2

From: Date: Wed, 14 Jan 2004 13:23:43 +0000
Subject: #26892 [Opn]: ocinewcollection fails with Oracle 9.2
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-53298@lists.php.net to get a copy of this message
ID: 26892 User updated by: tomy at envox dot hr Reported By: tomy at envox dot hr Status: Open Bug Type: OCI8 related Operating System: Suse 8.2 PHP Version: 4CVS-2004-01-13 (stable) New Comment: The error seems to be in configure script.... It says after checking for OCICollAssign: " if eval "test \"echo '$ac_cv_lib_'$ac_lib_var\" = yes"; then echo "$ac_t""yes" 1>&6 LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared cat >> confdefs.h <<\EOF #define HAVE_OCI8_COLLECTIONS 1 EOF " And after examining temporary confdefs.h i have in it: " #define HAVE_OCI8_ATTR_STATEMENT 1 #define HAVE_OCI_9_2 1 #define HAVE_OCI8_TEMP_LOB 1 #define HAVE_OCI8_COLLECTIONS 1 #define HAVE_OCI8 1 " The problem is obvious, in configure you define HAVE_OCI8_COLLECTIONS and in oci8.c you use PHP_OCI8_HAVE_COLLECTIONS (actually in oci8.c you use PHP_OCI8_HAVE_COLLECTIONS in several places and HAVE_OCI8_COLLECTIONS i one place). HAVE_OCI8_COLLECTIONS is used in all other files except oci8.c (configure, config.m4, one .h.in file, etc...) I do not know how you compiled and tested with this configure and this oci8.c since defines are obviously different. After changing all PHP_OCI8_HAVE_COLLECTIONS to HAVE_OCI8_COLLECTIONS in oci8.c I compiled succesfully and phpinfo() says: " oci8 OCI8 Support enabled Revision $Revision: 1.232 $ Active Persistent Links 0 Active Links 0 Oracle Version 9.2 Compile-time ORACLE_HOME /opt/oracle/product/9ir2 Libraries Used no value Temporary Lob support enabled Collections support enabled " However, the original bug described in original bug report remains!!!!!!!!!!!!!!!!!!! Previous Comments: ------------------------------------------------------------------------ [2004-01-14 07:46:41] tomy at envox dot hr config.log says: " ... configure:54726: checking for ncurses support configure:55705: checking for Oracle-OCI8 support configure:55750: checking Oracle Install-Dir configure:56045: checking Oracle version configure:56697: checking for OCIEnvNlsCreate in -lclntsh configure:56716: gcc -o conftest -g -O2 -Wl,-rpath,/opt/oracle/product/9ir2/lib -L/opt/oracle/product/9ir2/lib -Wl,-rpath,/opt/oracle/product/9ir2/lib -L/opt/oracle/product/9ir2/lib conftest.c -lclntsh -lmysqlclient -lmcrypt -lltdl -lpng -lz -lz -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -ldl -lm -lnsl -lclntsh 1>&5 configure:56816: checking for OCINlsCharSetNameToId in -lclntsh configure:56835: gcc -o conftest -g -O2 -Wl,-rpath,/opt/oracle/product/9ir2/lib -L/opt/oracle/product/9ir2/lib -Wl,-rpath,/opt/oracle/product/9ir2/lib -L/opt/oracle/product/9ir2/lib conftest.c -lclntsh -lmysqlclient -lmcrypt -lltdl -lpng -lz -lz -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -ldl -lm -lnsl -lclntsh 1>&5 configure:56971: checking for OCILobIsTemporary in -lclntsh configure:56990: gcc -o conftest -g -O2 -Wl,-rpath,/opt/oracle/product/9ir2/lib -L/opt/oracle/product/9ir2/lib -Wl,-rpath,/opt/oracle/product/9ir2/lib -L/opt/oracle/product/9ir2/lib conftest.c -lclntsh -lmysqlclient -lmcrypt -lltdl -lpng -lz -lz -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -ldl -lm -lnsl -lclntsh 1>&5 configure:57266: checking for OCICollAssign in -lclntsh configure:57285: gcc -o conftest -g -O2 -Wl,-rpath,/opt/oracle/product/9ir2/lib -L/opt/oracle/product/9ir2/lib -Wl,-rpath,/opt/oracle/product/9ir2/lib -L/opt/oracle/product/9ir2/lib conftest.c -lclntsh -lmysqlclient -lmcrypt -lltdl -lpng -lz -lz -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -ldl -lm -lnsl -lclntsh 1>&5 configure:57575: checking for Adabas support ... " I do not know how it should look like.... Makefile created has: " ... MYSQL_INCLUDE = -I/usr/include/mysql OCI8_SHARED_LIBADD = OCI8_DIR = /opt/oracle/product/9ir2 OCI8_VERSION = 9.2 PCRE_SHARED_LIBADD = ... " I checked via simple #ifdef and oci_debug wether PHP_OCI8_HAVE_COLLECTIONS is defined and it was not. So I defined it myself but it produces same error as before..... ------------------------------------------------------------------------ [2004-01-14 07:36:21] tony2001@php.net PHP_OCI8_HAVE_COLLECTIONS should be defined in ./configure execution process. you should not change its value manually. ./configure checks if there are appropriate functions in oracle client and decides if there is possibility to turn on collection support. so, check ./config.log, plz. it seems, that there is no OCICollAssign function in your OCI version. that's rather strange, 'cause I've tested it successfully with Oracle 9.2.0.1 ------------------------------------------------------------------------ [2004-01-14 04:31:19] tomy at envox dot hr Downloaded http://snaps.php.net/php5-latest.tar.gz and compiled. Had to install mysql-develop packages and newer libxml2 packages (I had to "borrow these from Suse 9.0 since there are no libxml2-2.5.10 for Suse 8.2, only 2.5.3, hope this is ok). After compiling and installing I got an error saying that there is no function named ocinewcollection. Revised the source in ext/oci8/oci8.c and noticed that PHP_OCI8_HAVE_COLLECTIONS is note defined, so I defined it and compiled again. After that I got same error from the original bug report in slightly different from. The result of ocinewcollection is still false :(. Output follows " OCIDebug: _oci_open_server new conn=0 dname=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.41)(PORT=1521)))(CONNECT_DATA=(SID=pirana)(SERVER=DEDICATED))) OCIDebug: _oci_open_session new sess=3 user=system OCIDebug: oci_do_connect: id=4 Warning: ocinewcollection() [function.ocinewcollection]: OCITypeByName: ORA-21301: not initialized in object mode in /srv/www/htdocs/envox/info2.php on line 14 Collection failed OCIDebug: START php_rshutdown_oci OCIDebug: END php_rshutdown_oci OCIDebug: START _oci_coll_list_dtor: 5 OCIDebug: END _oci_coll_list_dtor: 5 OCIDebug: START _oci_conn_list_dtor: id=4 OCIDebug: nothing to do.. OCIDebug: START _oci_close_session: logging-off sess=3 OCIDebug: END _oci_conn_list_dtor: id=4 " So, yes, you can place this bug into 5CVS also ..... I can only mention once more that the last version that worked is 4.3.1. 4.3.2 introduced this bug and it exists ever since..... ------------------------------------------------------------------------ [2004-01-13 13:50:07] sniper@php.net Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ------------------------------------------------------------------------ [2004-01-13 13:44:58] tony2001@php.net Please, try PHP5 latest snapshots and check if it works with them. ------------------------------------------------------------------------ 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/26892 -- Edit this bug report at http://bugs.php.net/?id=26892&edit=1

« previous php.bugs (#53298) next »