|  | 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 configuration
   Il 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++ ... |