ID: 35945 Comment by: ewuerfel at blinx dot de Reported By: dbaffaleuf at ixis-cib dot com Status: Open Bug Type: Sybase-ct (ctlib) related Operating System: Linux 2.6.9-22 RedHat AMD64 PHP Version: 5CVS, 4CVS (2006-01-11) (snap) New Comment:
The modifications solve the problem... but dont forget the ./buildconf in php_src ;-) Previous Comments: ------------------------------------------------------------------------ [2006-02-08 18:33:42] dbaffaleuf at ixis-cib dot com Hello, I downloaded the last release available (5.1.2) and modified the config.m4 for sybase_ct extension as suggested. The configure seems not to take care about those modifications, as the Makefile still refers to : (...) EXTRA_LIBS = -lcrypt -lsybtcl -lintl -lcomn -lct -lcs -lcrypt -lrt -lgd -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt (...) Therefore, the make fails on: /usr/bin/ld: skipping incompatible /msmorzine/sgbd/MX_MT_MSMORZINE/ASE1253/OCS-12_5//lib/libsybtcl.so when searching for -lsybtcl /usr/bin/ld: cannot find -lsybtcl I noticed that configure also refers as: (...) SYBASE_CT_LIBS="-L$SYBASE_CT_LIBDIR -lcs -lct -lcomn -lintl" (...) Then I modified the EXTRA_LIBS so it has to look for 64bits libraries: EXTRA_LIBS = -lcrypt -lsybtcl64 -lintl64 -lcomn64 -lct64 -lcs64 -lcrypt -lrt -lgd -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt and the make completes but the make install fails with: The context allocation routine failed. The following problem caused the failure: Invalid context version. Each call to php outputs this error. $ ./php -v The context allocation routine failed. The following problem caused the failure: Invalid context version. PHP 5.1.2 (cli) (built: Feb 8 2006 18:29:57) Copyright (c) 1997-2006 The PHP Group Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies I assume the modifications in config.m4 didn't solve the problem. Thanks for your help. ------------------------------------------------------------------------ [2006-02-04 16:59:25] shawnf at fletcher dot org dot za here is a patch for php-5.1 it makes the module use the 64bit libraries and most importantly adds CFLAGS="${CFLAGS} -g -DSYB_LP64" -----------------cut here------------------------ *** ext/sybase_ct/config.m4 2006-02-04 16:41:12.000000000 +0100 --- ext/sybase_ct/config.m4.old 2005-05-30 00:16:44.000000000 +0100 *************** *** 29,59 **** else AC_MSG_ERROR([ctpublic.h missing!]) fi - - CFLAGS="${CFLAGS} -g -DSYB_LP64" - PHP_ADD_LIBPATH($SYBASE_CT_LIBDIR, SYBASE_CT_SHARED_LIBADD) if test -f $SYBASE_CT_INCDIR/tds.h; then PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD) ! SYBASE_CT_LIBS="-L$SYBASE_CT_LIBDIR -lct64" else ! PHP_ADD_LIBRARY(cs64,, SYBASE_CT_SHARED_LIBADD) ! PHP_ADD_LIBRARY(ct64,, SYBASE_CT_SHARED_LIBADD) ! PHP_ADD_LIBRARY(comn64,, SYBASE_CT_SHARED_LIBADD) ! PHP_ADD_LIBRARY(intl64,, SYBASE_CT_SHARED_LIBADD) ! SYBASE_CT_LIBS="-L$SYBASE_CT_LIBDIR -lcs64 -lct64 -lcomn64 -lintl64" ! PHP_CHECK_LIBRARY(tcl64, netg_errstr, [ ! PHP_ADD_LIBRARY(tcl64,,SYBASE_CT_SHARED_LIBADD) ],[ ! PHP_ADD_LIBRARY(sybtcl64,,SYBASE_CT_SHARED_LIBADD) ],[ $SYBASE_CT_LIBS ]) ! PHP_CHECK_LIBRARY(insck64, insck__getVdate, [PHP_ADD_LIBRARY(insck64,, SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR]) ! PHP_CHECK_LIBRARY(insck64, bsd_tcp, [PHP_ADD_LIBRARY(insck64,, SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR]) fi fi --- 29,56 ---- else AC_MSG_ERROR([ctpublic.h missing!]) fi PHP_ADD_LIBPATH($SYBASE_CT_LIBDIR, SYBASE_CT_SHARED_LIBADD) if test -f $SYBASE_CT_INCDIR/tds.h; then PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD) ! SYBASE_CT_LIBS="-L$SYBASE_CT_LIBDIR -lct" else ! PHP_ADD_LIBRARY(cs,, SYBASE_CT_SHARED_LIBADD) ! PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD) ! PHP_ADD_LIBRARY(comn,, SYBASE_CT_SHARED_LIBADD) ! PHP_ADD_LIBRARY(intl,, SYBASE_CT_SHARED_LIBADD) ! SYBASE_CT_LIBS="-L$SYBASE_CT_LIBDIR -lcs -lct -lcomn -lintl" ! PHP_CHECK_LIBRARY(tcl, netg_errstr, [ ! PHP_ADD_LIBRARY(tcl,,SYBASE_CT_SHARED_LIBADD) ],[ ! PHP_ADD_LIBRARY(sybtcl,,SYBASE_CT_SHARED_LIBADD) ],[ $SYBASE_CT_LIBS ]) ! PHP_CHECK_LIBRARY(insck, insck__getVdate, [PHP_ADD_LIBRARY(insck,, SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR]) ! PHP_CHECK_LIBRARY(insck, bsd_tcp, [PHP_ADD_LIBRARY(insck,, SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR]) fi fi ------------------------------------------------------------------------ [2006-01-11 12:05:06] dbaffaleuf at ixis-cib dot com Hi, thx for your reply. Though, it does not work either with the 5.1. CVS snapshot you provided. I get exactly the same error message: Warning: sybase_query(): Sybase: Client message: (): user api layer: internal common library error: The bind of result set item 1 resulted in truncation. (severity 116) in /msmorzine/sgbd/contrib/src/php5.1-200601110930/MKTEST/bin/test_sybase_ct.php on line 4 resource(4) of type (sybase-ct link) bool(false) Warning: sybase_fetch_row(): supplied argument is not a valid Sybase result resource in /msmorzine/sgbd/contrib/src/php5.1-200601110930/MKTEST/bin/test_sybase_ct.php on line 8 ------------------------------------------------------------------------ [2006-01-09 16:17:45] dbaffaleuf at ixis-cib dot com Description: ------------ Acutally I have the problem both in PHP 4.4.1 and 4.4.2RC3 Always returns a correct resource id for the handler, but FALSE for the query (see the following code) The Sybase OpenClient warning code suggest an overflow in the CS_DATAFMT.maxlength C struct. When returning, the datalength is sized whether the type is CS_NUMERIC, CS_MONEY, etc... in the php_sybase_fetch_result_set() fonction (src: php_sybase_ct.c). Works fine in DB-LIB. The configure : ./configure \ --prefix=/msmorzine/sgbd/contrib/src/php4-STABLE-200601091335/MKTEST \ --with-sybase-ct=/msmorzine/sgbd/MX_MT_MSMORZINE/ASE1253/OCS-12_5/devlib \ --enable-static=sybase-ct \ --with-config-file-path=/msmorzine/sgbd/contrib/src/php4-STABLE-200601091335/MKTEST \ --with-apxs2=/msmorzine/sgbd/contrib/bin/apxs \ --with-gd=/msmorzine/sgbd/contrib/ \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm Reproduce code: --------------- The following code: $STR = "select name from syslogins"; $DBH = @sybase_connect("MX_MT_MSMORZINE","sa", "mypassword"); $QUERY = sybase_query($STR,$DBH); var_dump($DBH); var_dump($QUERY); while($row = sybase_fetch_row($QUERY)) { while(list($k, $v) = each($row)) { echo "\$row[$k] => $v\n"; } } Expected result: ---------------- int(4) int(5) $row[0] => probe $row[0] => sa Actual result: -------------- "Warning: sybase_query(): Sybase: Client message: (): user api layer: internal common library error: The bind of result set item 1 resulted in truncation. (severity 116) in /msmorzine/sgbd/contrib/src/php4-STABLE-200601091335/MKTEST/bin/test_sybase_ct.php on line 5 resource(4) of type (sybase-ct link) bool(false)". ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=35945&edit=1