[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