Bug #16286 Updated: undefined symbol: SQLParamData

From: Date: Fri, 29 Mar 2002 08:59:57 +0000
Subject: Bug #16286 Updated: undefined symbol: SQLParamData
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-3594@lists.php.net to get a copy of this message
ID: 16286 Updated by: gory@alphasoft-bg.com Reported By: gory@alphasoft-bg.com Status: Open Bug Type: ODBC related Operating System: Slackware 7.1 PHP Version: 4.1.2 New Comment: Re [28 Mar 10:52am] otmar.suessbauer@t-online.de As I had no idea how to get config.m4 work I simply cut and paste the last step of make and appended both libs, because I hoped, ext/odbc/php_odbc.lo was compile d correctly: I solved my problem compiling --with-iodbc only but while trying diferent combinations i have strange side effects. when i set CUSTOM_ODBC_LIBS="-llibdblib8 -llibdbodbc8" and compile without --with-custom-odbc=/usr/local/sybase/SYBSsa8 \ php_info() says ODBC custom not iodbc ??? Previous Comments: ------------------------------------------------------------------------ [2002-03-28 10:52:35] otmar.suessbauer@t-online.de I had the same problem with PHP 4.1.2, SuSE 7.3 and SQLAnywhere 8 and Apache 1.3.24 What I did: ASANY=/opt/sybase/SYBSsa8 1) /etc/ld.so.config append new line with /opt/sybase/SYBSsa8/lib run ldconfig 2) ln -s $ASANY/lib/libdblib8.so.1 /usr/lib/libdblib.so.1 ln -s $ASANY/lib/dbodbc8.so.1 /usr/lib/libdbodbc.so.1 ln -s $ASANY/lib/dbodbc8.so.1 /usr/lib/libdbodbcinst.so.1 (actually I did some more links e.g. libdbtasks8 etc., so I'm not sure what's all needed. With SQLAnywhere 5.5 these links had to be done) 3) Set environment, load asa_config.sh !!! export CFLAGS or CPPFLAGS="-DODBC_UNIX" export CUSTOM_ODBC_LIBS="-ldblib -lodbc" 4) First test sybase sample odbc.c in $ASANY/samples/asa/c worked fine with running asademo.db ldd of odbc sample showed: libdblib8.so.1 => /opt/sybase/SYBSsa8/lib/libdblib8.so.1 (0x40016000) libdbtools8.so.1 => /opt/sybase/SYBSsa8/lib/libdbtools8.so.1 (0x400ac000) dbodbc8.so.1 => /opt/sybase/SYBSsa8/lib/dbodbc8.so.1 (0x40209000) libc.so.6 => /lib/libc.so.6 (0x402cf000) libdbtasks8.so.1 => /opt/sybase/SYBSsa8/lib/libdbtasks8.so.1 (0x403f5000) libdl.so.2 => /lib/libdl.so.2 (0x40400000) libm.so.6 => /lib/libm.so.6 (0x40405000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) 5) Simple PHP configuration: ./configure --with-apxs=/usr/local/apache/bin/apxs \ --with-custom-odbc=/opt/sybase/SYBSsa8 \ In last step of make while linking I missed -ldblib and -lodbc and had a look in ext/odbc/config.m4, rules seemed ok for CUSTOM_ODBC_LIBS. But definitely this libs missed at the end. ldd of libphp4.so didn't show any odbc libs and apachectl start crashed with error SQLParamData. As I had no idea how to get config.m4 work I simply cut and paste the last step of make and appended both libs, because I hoped, ext/odbc/php_odbc.lo was compiled correctly: /bin/sh /work/php-4.1.2/libtool --silent --mode=link gcc -I. -I/work/php-4.1.2/ -I/work/php-4.1.2/main -I/work/php-4.1.2 -I/usr/local/apache/include -I/work/php-4.1.2/Zend -I/work/php-4.1.2/ext/mysql/libmysql -I/opt/sybase/SYBSsa8/include -I/work/php-4.1.2/ext/xml/expat -DODBC_UNIX -DLINUX=22 -DUSE_HSREGEX -I/work/php-4.1.2/TSRM -DODBC_UNIX -prefer-pic -o libphp4.la -rpath /work/php-4.1.2/libs -avoid-version stub.lo Zend/libZend.la sapi/apache/libsapi.la main/libmain.la regex/libregex.la ext/mysql/libmysql.la ext/odbc/libodbc.la ext/pcre/libpcre.la ext/posix/libposix.la ext/session/libsession.la ext/standard/libstandard.la ext/xml/libxml.la TSRM/libtsrm.la -lpam -ldl -lcrypt -lresolv -lm -ldl -lnsl -lresolv -lcrypt -lodbc -ldblib After that ldd of libphp4.so looked like this: libdl.so.2 => /lib/libdl.so.2 (0x4018a000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4018e000) libresolv.so.2 => /lib/libresolv.so.2 (0x401bb000) libpam.so.0 => /lib/libpam.so.0 (0x401cd000) libm.so.6 => /lib/libm.so.6 (0x401d7000) libnsl.so.1 => /lib/libnsl.so.1 (0x401f9000) dbodbc8.so.1 => /opt/sybase/SYBSsa8/lib/dbodbc8.so.1 (0x4020f000) libdblib8.so.1 => /opt/sybase/SYBSsa8/lib/libdblib8.so.1 (0x402c4000) libc.so.6 => /lib/libc.so.6 (0x4035a000) libdbtasks8.so.1 => /opt/sybase/SYBSsa8/lib/libdbtasks8.so.1 (0x40480000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) and apache started without errors. Remember LD_LIBRARY_PATH (asa_config.sh) has to be set before starting apache, otherwise it's producing seg faults... a little test finally worked: <html><head><title>Example 1</title></head><body> <? $con = odbc_connect("asademo","dba","sql"); if ( $con == 0 ) { echo "Error! No ODBC-Connection"; } else { $result = odbc_exec($con, "sa_conn_info" ); $count = odbc_result_all($result); odbc_close($con); } ?> </body></html> ~/.odbc.ini looks like: [asademo] ENG=asademo UID=dba PWD=sql and the Anywhere Server was started like: dbsrv8 asademo.db -ud -n asademo So at the end it seems to me that making the correct rules in ext/odbc doesn't work. Hope this helps Kind regards Otmar Suessbauer ------------------------------------------------------------------------ [2002-03-27 10:24:38] gory@alphasoft-bg.com also try with CUSTOM_ODBC_LIBS="-llibdblib8.so -llibdbodbc8.so" but same thing ------------------------------------------------------------------------ [2002-03-26 15:24:57] sniper@php.net reclassified ------------------------------------------------------------------------ [2002-03-26 08:19:30] gory@alphasoft-bg.com I'm trying to compile php with custom odbc support (Sybase SQL Anywhere 8) and i get this :((( Cannot load /usr/local/apache/libexec/libphp4.so into server: /usr/local/apache/libexec/libphp4.so: undefined symbol: SQLParamData ------------------ CUSTOM_ODBC_LIBS="-l/usr/local/sybase/SYBSsa8/lib/libodbc.so -l/usr/local/sybase/SYBSsa8/lib/libodbcinst.so" #CUSTOM_ODBC_LIBS="-llibodbc.so -llibodbcinst.so" - tried also export CUSTOM_ODBC_LIBS CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" #CPPFLAGS="-DODBC_UNIX -DSQLANY_BUG" - tried also #CPPFLAGS="-DODBC_UNIX" - tried also #CPPFLAGS="-DODBC_QNX" - tried also export CPPFLAGS ------------------ make clean rm config.cache ./configure \ --with-apxs=/usr/local/apache/bin/apxs \ --with-mysql=/usr/local/mysql \ --with-iodbc=/usr/local \ --with-custom-odbc=/usr/local/sybase/SYBSsa8 \ --with-zlib \ --with-gd=/usr/local \ --with-png-dir=/usr/local/lib \ --with-freetype-dir=/usr/local/lib \ --with-jpeg-dir=/usr/local make make install ------------------ ldd /usr/local/apache/libexec/libphp4.so libdl.so.2 => /lib/libdl.so.2 (0x40186000) libz.so.1 => /usr/local/lib/libz.so.1 (0x40189000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x40197000) libresolv.so.2 => /lib/libresolv.so.2 (0x401c4000) libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x401d2000) libpng.so.3 => /usr/local/lib/libpng.so.3 (0x4020b000) libjpeg.so.62 => /usr/local/lib/libjpeg.so.62 (0x4024a000) libm.so.6 => /lib/libm.so.6 (0x40269000) libnsl.so.1 => /lib/libnsl.so.1 (0x40285000) libc.so.6 => /lib/libc.so.6 (0x4029a000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) ------------------ I'm not sure is this a bug or lack of documetation induce me to wrong way. --with-custom-odbc[=DIR] Include a user defined ODBC support. The DIR is ODBC install base directory, which defaults to /usr/local. Make sure to define CUSTOM_ODBC_LIBS and have some odbc.h in your include dirs. E.g., you should define following for Sybase SQL Anywhere 5.5.00 on QNX, prior to run configure script: CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib -lodbc". ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=16286&edit=1

« previous php.bugs (#3594) next »