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 configurationThe 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++ ... |