I've finally got PHP 5.0.5 running under Apache2 on Solaris 8 ... connecting to Sybase ASE servers 12.0 and 12.5 using CT-LIB 12.5.
The following was my build procedure -
Build Apache:
./configure \
--prefix=/usr/local/apache2 \
--enable-so
make
make install
Edit httpd.conf, adjusting directives to suit the local environment.
Following advice given above, update the Sybase version string in the PHP sybase_ct module header file:
vi /var/build/php-5.0.5/ext/sybase_ct/php_sybase_ct.h
change this line ...
#define CTLIB_VERSION CS_VERSION_100
...to...
#define CTLIB_VERSION CS_VERSION_125
Build PHP:
SYBASE=/..../..../sybase12_5 <<-- path to your Sybase distribution root
SYBASE_OCS=OCS-12_5
LD_LIBRARY_PATH=$SYBASE/$SYBASE_OCS/lib
export SYBASE SYBASE_OCS PATH LD_LIBRARY_PATH
./configure \
--prefix=/usr/local/php \
--with-sybase-ct=$SYBASE/$SYBASE_OCS \
--enable-static=sybase-ct \
--with-apxs2=/usr/local/apache2/bin/apxs \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm
make
make test
NOTE: 'make test' will almost certainly fail all of the Sybase functionality, unless you update the test include file to use valid connectivity details for your local server:
vi /var/build/php-5.0.5/ext/sybase_ct/tests/test.inc
// Change if needed
define('HOST', '****');
define('USER', '****');
define('PASSWORD', '****');
make install
Edit Apache's httpd.conf file to associate .php files with a MIME type:
#
# PHP script support
#
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
Edit the apachectl script, inserting the following variable declarations after environment variables are imported:
SYBASE=/..../..../sybase12_5
SYBASE_OCS=OCS-12_5
LD_LIBRARY_PATH=$SYBASE/$SYBASE_OCS/lib:$LD_LIBRARY_PATH
export SYBASE SYBASE_OCS LD_LIBRARY_PATH
Ensure you have an 'interfaces' file in the root of your sybase distribution (Above the OCS-12_5 subdirectory), containing a server entry in the following format for each server you want to connect to:
dataservername_ds
<tab> master tcp ether <hostname> <port>
<tab> query tcp ether <hostname> <port>
(if this is your dataserver machine, there will be at least 1 entry already for the local dataserver. It is advisable to install all of the above on a separate machine though, with its own copy of the sybase client)
Cross fingers, and:
apachectl start
If you get 'relocation' errors when starting Apache with the php module configured to load, check the output of 'ldd libphp5.so'. Each of the Sybase libraries should link to files under your Sybase client distribution:
ldd /usr/local/apache2/modules/libphp5.so
libtcl.so => /.../sybase12_5/OCS-12_5/lib/libtcl.so
libintl.so.1 => /.../sybase12_5/OCS-12_5/lib/libintl.so.1
libcomn.so => /.../sybase12_5/OCS-12_5/lib/libcomn.so
libct.so => /.../sybase12_5/OCS-12_5/lib/libct.so
libcs.so => /.../sybase12_5/OCS-12_5/lib/libcs.so
...
<snip other libraries>
...
If you see 'libintl.so' linking anywhere else, this is likely because the PHP build has incorrectly linked to a slightly different filename - libintl.so.1 - which doesn't exist in the Sybase client. Unfortunately a completely unrelated library of the same name does exist elsewhere in Unix! (Apparently the Sybase version was created before the duplicate was introduced into Unix).
My workaround was to create the following symlink in sybase client library 'lib' directory -
libintl.so.1 -> ./libintl.so*
'make distclean' in your PHP build directory, and repeat the build as above.