ID: 16286
Updated by: [EMAIL PROTECTED]
Reported By: [EMAIL PROTECTED]
Status: Open
Bug Type: ODBC related
Operating System: Slackware 7.1
PHP Version: 4.1.2
New Comment:
Re [28 Mar 10:52am] [EMAIL PROTECTED]
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] [EMAIL PROTECTED]
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] [EMAIL PROTECTED]
also try with
CUSTOM_ODBC_LIBS="-llibdblib8.so -llibdbodbc8.so"
but same thing
------------------------------------------------------------------------
[2002-03-26 15:24:57] [EMAIL PROTECTED]
reclassified
------------------------------------------------------------------------
[2002-03-26 08:19:30] [EMAIL PROTECTED]
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