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.
Le istruzioni riguardano specificatamente la versione 4.3.1 e 4.3.2 su Linux ma supponiamo che non dovrebbero essere molto diverse anche con le versioni successive.
Per prima cosa bisogna posizionarsi sotto la directory php-4.3.1/ext/odbc ed editare il file config.m4 . In esso si distinguono dei blocchi, uno per ogni tipo di database, che iniziono con una if a colonna 1 e terminano con fi sempre a colonna 1. In questo file è necessario aggiungere uno di questi blocchi per picoSQL prima dell'ultimo che inizia con la linea

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/picoSQL
A 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++ ...
   


SourceForge.net Logo
Last update: 2003-08-25