ID:               16286
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Open
+Status:           Closed
 Bug Type:         ODBC related
 Operating System: Slackware 7.1
 PHP Version:      4.1.2
 New Comment:

This bug has been fixed in CVS. You can grab a snapshot of the
CVS version at http://snaps.php.net/. In case this was a documentation 
problem, the fix will show up soon at http://www.php.net/manual/.
In case this was a PHP.net website problem, the change will show
up on the PHP.net site and on the mirror sites.
Thank you for the report, and for helping us make PHP better.

Not really fixed, but can you please try a more recent CVS snapshot? 
The build system was drastically changed, and I'm not sure if this was
fixed or not.

If it was great, if not, please re-open the bug.


Previous Comments:
------------------------------------------------------------------------

[2002-04-07 13:04:47] [EMAIL PROTECTED]

29 Mar 3:59am] [EMAIL PROTECTED] 

sorry, I was on holyday for some days.

>I solved my problem compiling --with-iodbc only

I never used IODBC for SQL Anywhere because it ships with its own ODBC
libs. I think it should have the best performance (!?). But maybe IODBC
works fine.

Important is: the managed odbc in $ASANY/drivers is only for MOBYLINK
and has not to be mixed up with the non managed version in $ASANY/lib
for ASA. In asa_config.sh they append $ASANY/drivers/lib to
$LD_LIBRARY_PATH. This path could cause problems with -lodbc, because
there is a libodbc.so you can't use for ASA !

>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 \

I think, you can't mix it up. --with-iodbc and --with-custom-odbc are
two completely different driver families and the environment variable
CUSTOM_ODBC_LIBS refers to the custom_odbc way. And this recommends 2
libs with standard names (preferable in /usr/lib I suppose), so the
custom odbc libs have to be symlinked (I had some experience on another
new machine, so I'm quite sure, it works):
ln -s /opt/sybase/SYBSsa8/lib/libdblib8.so.1 \
  /usr/lib/libdblib.so
ln -s /opt/sybase/SYBSsa8/lib/libdblib8.so.1 \
  /usr/lib/libdblib.so.1
ln -s /opt/sybase/SYBSsa8/lib/dbodbc8.so.1 \
  /usr/lib/libodbc.so
ln -s /opt/sybase/SYBSsa8/lib/dbodbc8.so.1 \
  /usr/lib/libodbc.so.1
otherwise -lodbc -ldblib won't work.

Still I had to append "-lodbc -ldblib" to the final make step of php
4.1.2 because it was missing.

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

[2002-03-29 03:59:55] [EMAIL PROTECTED]

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 ???

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

[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

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

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/16286

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

Reply via email to