picoSQL e PHP |
Corso Italia, 178 - 56125 Pisa phone +39 050 46380 e-mail picosoft@picosoft.it |
Dalla release 1.5beta, è possibile usare picoSQL da pagine PHP.
L'installazione non è difficile, ma comunque speriamo che il
supporto a picoSQL venga inserito nella release standard del PHP.
Al momento attuale è necessario fare alcune semplici modifiche
sui 2 file della distribuzione e compilare nel modo usuale.
picoSQL usa le "Funzioni ODBC unificate",
(vedi) ma,
seguendo le istruzioni di seguito, non è
necessario installare alcun supporto ODBC. if test -n "$ODBC_TYPE"; then. Il blocco da aggiungere è il seguente: 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 configurationIl secondo file da modificare risiede nella stessa directory e si chiama php_odbc_includes.h. Anche in esso si distinguono chiaramente dei blocchi, ciascuno per ogni tipo di database, che iniziano con una #elif defined (meno il primo che inizia ovviamente con una #if defined) e arrivano alla #elif successiva (meno gli ultimi 2 che terminano rispettivamente con una #else e con una #endif). Il blocco da aggiungere noi lo abbiamo messo prima della riga #else /* MS ODBC */ed è il seguente: /* ---------------------- 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 */A questo punto è necessario ritornare nella directory principale del PHP (cd ../..) e lanciare il comando ./buildconf, eventualmente con l'opzione --force. Terminato il comando, picoSQL è configurato, e infatti compare nella lista dei database supportati se si lancia il comando ./configure --help. Ora è necessario eseguire la configurazione per compilazione secondo le esigenze specifiche, avendo cura di mettere l'opzione --with-picoSQL=/directory/di/picoSQL; un esempio è il seguente: ./configure --with-picoSQL=/usr/local/picoSQLA questo punto, se si usa un compialatore gnu-C fino alla release 2.96, basta seguire le normali procedure di compilazione e il gioco è fatto! Usando una release di GNU-C 3.2.2 si incontra invece un altro problema da superare, dovuto al fatto che picoSQL è scritto in gran parte in C++. I programmi scritti con questo linguaggio necessitano di una speciale fase di link per poter collegare i costruttori, i metodi virtuali e altro ancora. Nelle vecchie versioni di GNU-C questa fase veniva eseguita comunque, anche quando per fare il link si usava il programma gcc. In quello nuovo non è più così e questa fase speciale viene eseguita solo se per fare il link si usa il programma g++. Per questo motivo è necessario modificare il Makefile in modo da sostituire il comando per il link finale. Tale comando è contenuto in due variabili (almeno fino alla release 4.3.2), BUILD_CLI e BUILD_CGI e queste variabili appaiono in due lunghe linee del Makefile che iniziano nel modo seguente: BUILD_CLI = $(LIBTOOL) --mode=link $(CC) ... BUILD_CGI = $(LIBTOOL) --mode=link $(CC) ...Esse debbono essere modificate come segue: BUILD_CLI = $(LIBTOOL) --mode=link g++ ... BUILD_CGI = $(LIBTOOL) --mode=link g++ ... |