[PLUTO-ildp] MSSQL6-Openlink-PHP-ODBC.sgml, versione zero

CM contardm a gmail.com
Dom 11 Mar 2007 20:50:50 CET


Un saluto a tutti,

    ecco la prima versione del documento.. a dire il vero dovrei mandare 
solo le prime 50 righe, ma considerato che è completo ve lo posto per 
intero (scusatemi se la mail verrà un poco "cicciotta").

La versione del file in lingua inglese l'ho scaricata da questo 
indirizzo 
<http://cvsview.tldp.org/index.cgi/*checkout*/LDP/howto/linuxdoc/MSSQL6-Openlink-PHP-ODBC.sgml?rev=HEAD&content-type=text/x-sgml>e 
ho copia-incollato tutto il doc in calce.

Fatemi conoscere le vostre impressioni,

Buona serata.

-----------------------------------------------------------------------

<!doctype linuxdoc system>

<!--
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Changelog:

  v3.0
     Conversione in linuxdoc sgml (gferg(at)metalb.unc.edu)

  v2.0b
     A. iODBC non è richiesto per un corretto funzionamento.
     B. Non ci sono file *.h dispersi, in questo modo non è necessario 
modificare unified_odbc.h in PHP.
     C. Cambiato il codice di esempio per rimuovere la funzione 
odbc_num_rows().
     D. Viene annunciato esplicitamente il supporto per MS SQL 7.0.
     E. Aggiunta la sezione FAQ.

 -->

<article>

<title>Connessione a MS SQL 6.x+ attraverso Openlink/PHP/ODBC mini-HOWTO

<author>Zili Zhang, <tt/silen a silen.net/
<date>3.0, 1999-07-15

<abstract>
Come connettersi ad un server di database MS SQL 6.x+ attraverso le 
funzioni ODBC di
PHP3(3.0.1x o superiore) compilate con i driver Openlink sotto Linux.
</abstract>

<!-- Table of contents -->
<toc>

<!-- Begin the document -->

<sect>Introduzione
<p>
Questo documento descrive come connettersi ad un database server MS SQL 
6.x+ attraverso le funzioni ODBC di
PHP3(3.0.1x o superiore) compilate con i driver Openlink sotto Linux.

Nel mondo Unix, la gente potrebbe non sopportare di interagire con 
qualsiasi software legato a M$. Comunque, all'atto pratico, il vostro 
capo potrebbe richiedervi di memorizzare dati in un database MS SQL su 
NT per eseguire applicazioni web su Linux.
Cosa fare? Abbandonare il posto di lavoro o sedersi a leggere questo 
documento? Se scegliete la seconda opzione qui trovete una dettagliata 
guida all'installazione cosicché voi possiate mantenere il tuo posto di 
lavoro ancora per un poco. Questa è una guida spiega "come-farlo¨ e non 
"perché-farlo". Quindi non chiedetemi perché è abc e non cba. Non lo 
posso sapere.

PHP sta diventando sempre più popolare tra i programmatori web, 
principalmente perché può essere configurato per connettersi a vari 
database come Oracle, MySQL, Solid e così via. Ma, per MS SQL Server, il 
problema è differente. Nonostante si possano usare le funzionalità PHP 
per il supporto di Sybase-ct, in parecchi (o perlomeno, io) preferiscono 
connettersi attraverso ODBC.

Per utilizzare il middleware Openlink per ODBC si potrebbero usare 
quelle funzioni ODBC_xxxx per connettersi a tutti quei database per i 
quali esiste un driver Openlink.
Dovete installare il middleware per i client e i server Openlink per 
Linux e ricompilare PHP per supportare le funzioni ODBC. Alla fine di 
questo documento troverete un piccolo script da utilizzare come esempio.

<sect1>Copyright
<p>
Copyright (c) 1999 by Zili Zhang
<P>
Please freely copy and distribute (sell or give away) this document in
any format.  It's requested that corrections and/or comments be forwarded
to the document maintainer. You may create a derivative work and distribute
it provided that you:

<itemize>
<item>
Send your derivative work (in the most suitable format such as
sgml) to the LDP (Linux Documentation Project) or the like for posting
on the Internet.  If not the LDP, then let the LDP know where it is
available.
<item>
License the derivative work with this same license or use GPL.
Include a copyright notice and at least a pointer to the license used.
<item>
Give due credit to previous authors and major contributors.
</itemize>

<P>
If you're considering making a derived work other than a translation,
it's requested that you discuss your plans with the current maintainer.

<sect1>Disclaimer
<p>
The following document is offered in good faith as comprising only
safe configuration and procedures. No responsibility is accepted by
the author for any loss or damage caused in any way to any person or
equipment, as a direct or indirect consequence of following these
instructions.

This document was derived from the plain text entry found on
<url url="http://www.silen.net/openlink-php-odbc.txt"
    name="http://www.silen.net/openlink-php-odbc.txt">.

<sect>Openlink
<p>
Questo passo è un po' complicato, dovete lavorare sia sul client Linux 
che sul server NT.

<sect1>Lato Client
<p>
<itemize>
<item>
Dall'indirizzo <url url="ftp://www.openlinksw.com/" 
name="ftp://www.openlinksw.com/">,
scaricate <tt>install.sh</tt> e <tt>likoxglc.taz</tt>
(per un sistema basato su libc6) o <tt>likoxxxx.taz</tt> (per un sistema 
basato su libc5).
</item>
<item><tt>mkdir /usr/local/openlink</tt></item>
<item>copiate <tt>install.sh</tt> e <tt>likoxglc.taz</tt>
in <tt>/usr/local/openlink</tt>
</item>
<item><tt>cd /usr/local/openlink</tt></item>
<item>
<tt>sh install.sh</tt>, lo script di installazione vi chiederà l'owner 
ed il gruppo a cui associare il programma. Estrarrà oggetti nella 
directory <tt>odbcsdk</tt> sotto <tt>/usr/local/openlink</tt>
e copierà <tt>.odbc.ini</tt> nella directory home dell'owner.
</item>
</itemize>

<sect1>Lato Server
<p>
<itemize>
<item>
Da <url url="ftp://www.openlinksw.com/" name="ftp://www.openlinksw.com/">,
scaricate <tt>ntadm65x.zip</tt> sul vostro server NT.
</item>
<item><tt>Scompattate ntadm65x.zip</tt></item>
<item><tt>cd disk1</tt> - directory dove volete estrarre il 
pacchetto.</item>
<item>eseguire <tt>setup</tt> e seguite le istruzioni per installare il 
middleware Openlink.</item>
<item>Ricordate di attivare il broker di richieste Openlink dal menu 
Avvio o dal gestore servizi del pannello di controllo.</item>
</itemize>

<sect1>Configurazione prima del test
<p>
<itemize>
<item>
mantenete il file <tt>.odbc.ini</tt> nella vostra directory home.
</item>
<item>copiate <tt>udbc.ini</tt> dalla directory bin, nella directory di 
installazione del middleware Openlink, nella directory <tt>/etc</tt> del 
client.
</item>
<item>configurate <tt>/etc/udbc.ini</tt>. Nella sezione 
[dsn_sql6] modificate le voci host, database, username and 
password perché siano aderenti alle impostazioni del vostro server.
Questa è una parte del mio file <tt>/etc/udbc.ini</tt>:
<tscreen><verb>
  [dsn_sql6]
  Host            = 10.0.0.1
  ServerType      = sql6
  ;ServerOptions  =
  Database        = pubs
  ;FetchBufferSize = 30
  UserName        = sa
  Password        = xxxxxxx

</verb></tscreen>
</item>
<item>Aggiungete alla variabile di ambiente 
<tt>LD_LIBRARY_PATH='/usr/local/openlink/odbcsdk/lib'</tt>
ed esportatela. Nella shell csh, digitate:
<tt>setenv LD_LIBRARY_PATH /usr/local/openlink/odbcsdk/lib</tt></item>
</itemize>

<sect1>Test usando <tt>odbctest</tt>
<p>
<itemize>
<item><tt>cd /usr/local/openlink/odbcsdk/examples</tt></item>
<item><tt>./odbctest</tt></item>
<item>digitate: <tt>dsn=dsn_sql6</tt></item>
<item>alla comparsa di 'sql>', potete eseguire un comando sql per 
provare la connessione.</item>
</itemize>


<sect>PHP
<p>
Ora che abbiamo installato Openlink, possiamo procedere alla 
compilazione di PHP. Notate che perché tutto funzioni con questa 
versione è richiesto PHP 3.0.10 o superiore.
<itemize>
<item>Dall'indirizzo <url url="http://www.php.net/" 
name="http://www.php.net">, scaricate
<tt>php-3.0.11.tar.gz</tt></item>
<item> Ora eseguite i comandi:
<tscreen><verb>
gzip -dc php-3.0.11.tar.gz|tar -xof -

cd php-3.0.11

./configure --with-openlink (--with-mysql --with-gd=/usr/local/gd1.3 
--enable-track-vars)

    NOTA: la mia configurazione prevede di far funzionare PHP in modo CGI
          ed di supportare mysql. La vostra configurazione potrebbe 
essere differente.

make --silent

    NOTA: non preoccupatevi di eventuali segnalazioni.

make install

</verb></tscreen>
Questo installerà gli eseguibili PHP in <tt>/usr/local/bin</tt>.
Prima che eseguiate PHP, copiate i file delle librerie sotto
<tt>/usr/local/openlink/odbcsdk/lib</tt> in <tt>/usr/lib</tt> per 
semplificare a PHP la ricerca delle librerie Openlink (lo so, esistono 
metodi migliori).
</item>
</itemize>


<sect>Esempio
<p>
Riferitevi al manuale PHP per l'uso delle funzioni ODBC. Questo è il mio 
esempio di codice odbc.php3: (notate che poiché odbc_num_rows() non 
ritorna valori, è necessario chiamare ripetutamente odbc_fetch_row() per 
ottenere tale numero)
<tscreen><verb>
<?
/* alcune variabili di ambiente, potete provare a commentarle per verificare
 * se le cose funzionano ugualmente.
 */
putenv("LD_LIBRARY_PATH=/usr/local/openlink/odbcsdk/lib");
putenv("UDBCINI=/etc/udbc.ini");
putenv("ODBCINI=/root/.odbc.ini");
putenv("DebugFile=/tmp/udbc.out");      // tracciamento su file di debug

$dsn="DSN=dsn_main";    // notate che 'DSN=' è obbligatorio
$user="sa";
$password="xxxxxxx";

$sql="SELECT * FROM titles";

/* directly execute mode                        */
if ($conn_id=odbc_connect("$dsn",$user,$password)){
        echo "connected to DSN: $dsn<br><br>";
        if($result_id=odbc_do($conn_id, $sql)) {
                echo "executing '$sql'<br><br>";
                        $num_fields=odbc_num_fields($result_id);
                        if($num_fields>0){
                                echo "Number of fields:
$num_fields<br>";
                                for($i=1;$i<=$num_fields;$i++){

$field_name[$i-1]=odbc_field_name($result_id,$i);
                                }
                                $num_rows=0;
                                while(odbc_fetch_row($result_id)){
                                        for($i=1;$i<=$num_fields;$i++){

$result[$num_rows][$field_name[$i-1]]=odbc_result($result_id,$i);
                                        }
                                        $num_rows++;
                                }
                                echo "Number of rows: $num_rows<br>";
                        }else{
                                echo "not a field returned. <br><br>";
                        }
                echo "Results:<br>";
                for($i=0;$i<sizeof($result);$i++){
                        while(list($key,$value)=each($result[$i])){
                                echo "$i:$key=$value<br>";
                        }
                }
                echo "freeing result<br><br>";
                odbc_free_result($result_id);
        }else{
                echo "can not execute '$sql'<BR><BR>";
        }
        echo "closing connection $conn_id";
        odbc_close($conn_id);
}else{
        echo "can not connect to DSN: $dsn<br><br>";
}
?>

</verb></tscreen>

<sect>FAQ
<p>

<itemize>
<item><em>Questa procedura funziona allo stesso modo con MSSQL 7.0?</em>
<p>
Sì, Openlink aggiornerà il suo software alla versione 7.0, ma non si sa 
quando.
<p>
 
</item>

<item><em>Ho seguito passo per passo questo documento per installare i 
driver di Openlink, ma mi sono fermato al punto "install 
ntadm65x.zip". Dopo aver installato ntadm65x ho provato ad avviare 
il broker di richieste OpenLink e mi ha ritornato l'errore:</em>

<tscreen><verb>
 unable to open the service control manager <5>
 press RETURN to exit oplrqb

</verb></tscreen>
<em>potresti spiegarmi come posso risolvere tale problema?</em>
<p>
Dovrebbe essere un problema di NT, prova riavviando il computer e poi a 
riavviare il servizio Openlink dal gestore servizi del pannello di 
controllo.
</item>
</itemize>

</article>









Maggiori informazioni sulla lista pluto-ildp