![]() |
picoSQL and PHP |
![]() Corso Italia, 178 - 56125 Pisa phone/fax +39 050 46380 e-mail picosoft@picosoft.it |
![]()
Starting from release 1.5beta, you can access picoSQL from PHP pages.
The installation is rather simple, anyway we hope that picoSQL
will be supported in the standard PHP release.
At this moment, you need to perform some modification on 2 files in
the distribution and to compile as usual.
picoSQL use the the "Unified ODBC functions",
(see here) but,
with the following instructions, you do not need to
install any ODBC support. if test -n "$ODBC_TYPE"; then. The block to add is the following one:
dnl --------------------------- start picoSQL configuration
if test -z "$ODBC_TYPE"; then
AC_MSG_CHECKING(for picoSQL support)
AC_ARG_WITH(picoSQL,
[ --with-picoSQL[=DIR] Include picoSQL support. DIR is the
picoSQL base install directory, defaults to
/usr/local.],
[
PHP_WITH_SHARED
if test "$withval" = "yes"; then
withval=/usr/local
fi
if test "$withval" != "no"; then
PHP_ADD_LIBRARY_WITH_PATH(picocpp, $withval/lib)
PHP_ADD_LIBRARY_WITH_PATH(picoiiop, $withval/lib)
PHP_ADD_LIBRARY_WITH_PATH(picosqlnet, $withval/lib)
PHP_ADD_INCLUDE($withval/inc, 1)
ODBC_TYPE=picoSQL
ODBC_INCLUDE=-I$withval/inc
ODBC_LFLAGS=-L$withval/lib
ODBC_LIBS=-lpicosqlnet -lpicoiiop -lpicocpp
AC_DEFINE(HAVE_PICOSQL,1,[ ])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
],[
AC_MSG_RESULT(no)
])
fi
dnl --------------------------- end picoSQL configuration
The other file to modify is in the same directory and its name is
php_odbc_includes.h. Also in this file there are
blocks of text, one for each database supported. Each block starts
with a #elif defined command (of course the first starts
with a #if defined command) and ends at the next
#elif defined (excluding the last 2 blocks that and
with a #else and with a #endif).
We put the block to add before the line #else /* MS ODBC */and it is the following one: /* ---------------------- start picoSQL */ #elif defined(HAVE_PICOSQL) /* PICOSQL */ #define ODBC_TYPE "picoSQL" #define HAVE_SQL_EXTENDED_FETCH 1 #include <odbcsql.h> # define SQL_MAX_MESSAGE_LENGTH 512 /* ---------------------- end picoSQL */Now, you need set the root directory of PHP as current directory (cd ../..) and run the command ./buildconf (eventually using the --force option). At the end of the run, picoSQL is configured and, in fact, it appears in the list of the supported database, as you can see running the command ./configure --help. You can now to configure the compilation as usual, remembering to add the option --with-picoSQL=/directory/of/picoSQL; For example: ./configure --with-picoSQL=/usr/local/picoSQLAt this point, if you use GNU-C until rel 2.96, you can launch the compilation as usual and you get a picoSQL enabled PHP. If you use a more recent GNU-C release (we try with GNU-C rel 3.2.2), there is another problem to solve, due to the fact that a big part of picoSQL is written using C++. C++ programs need a particular linkage phase to bind virtual methods, constructors and other. Using GNU-C until 2.96, this phase was executed also using the gcc program as linker program, while in the 3.2.2 this phase is executed only using the g++ program as linker program. So you need to modify the Makefile to do the g++ execute the linking phase. This command is contained in two variables whose name is BUILD_CLI and BUILD_CGI. So you need to modify the following two (long) lines: BUILD_CLI = $(LIBTOOL) --mode=link $(CC) ... BUILD_CGI = $(LIBTOOL) --mode=link $(CC) ...with the following ones: BUILD_CLI = $(LIBTOOL) --mode=link g++ ... BUILD_CGI = $(LIBTOOL) --mode=link g++ ... |