|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 12
|
Php + ADODB + Linux + MS SQLServer
Salve a tutti, ho installato sulla mia macchina linux (distro Ubuntu) Apache2 + Php5. Ora devo connettermi ad un db MS SQLServer e per farlo ho pensato di usare le librerie ADODB ma la pagina php che ho fatto non sembra funzionare. Qualcuno sa il perchè? Il codice che effettua la connect e la query è il seguente
Codice:
<?php
// libreria da includere per la connessione con il database
include('../adodb/adodb.inc.php');
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$conn = ADONewConnection('odbc_mssql');
$dsn = "Driver={SQL Server};Server=$server;Database=$db;";
$conn -> Connect($dsn, $username, $password);
if (!$conn) die("Connection failed");
$rsAule = $conn -> Execute($qryAule);
if (!$rsAule) {
echo $conn -> ErrorMsg();
die("<br />Unable to execute the query");
}
$rsAule -> MoveFirst();
?>
Codice:
Warning: odbc_connect() [function.odbc-connect]: SQL error: [unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL state IM002 in SQLConnect in /var/www/adodb/drivers/adodb-odbc.inc.php on line 60 [unixODBC][Driver Manager]Data source name not found, and no default driver specified Unable to execute the query Vi ringrazio anticipatamente per l'aiuto El GianGio |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Mmmmhmhmhhh...come fa a funzionare ADO da Linux ? Dove hai le librerie ?!!?
Leggi qui come si fa a connettersi a MS SQL da Linux: http://it.php.net/manual/it/ref.mssql.php Ultima modifica di cionci : 16-10-2006 alle 08:40. |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 12
|
Le librerie le importo tramite il comando
Codice:
include('../adodb/adodb.inc.php');
Comunque ora mi leggerò il link che mi hai dato per vedere se riesco a risolvere qualcosa Grazie |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Bello dare un nome registrato ad una libreria open
ADODB è l'oggetto di Microsoft per conenttersi ai database... |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2003
Messaggi: 321
|
Guarda non conosco ADODB, però posso dirti che io ho fatto delle chiamate verso MSSQL da Linux.
Basta installare sulla macchina linux FreeTds, ed in fase di compilazione del Php abilitare le chiamate di MSSQL. Alla fine utilizzi le classiche mssql_query() etc...
__________________
Troy Bayliss: l'eroe dei 2 mondi!! W-SBK Champion e vincitore della gara MotoGP di Valencia 2006! |
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 12
|
Penso proprio che farò una prova con le classiche mssql_query come dici tu. Inoltre credo che freeTDS sia già correttamente installato sulla mia distro di Ubuntu perchè digitando da shell il comando "isql -v MSSql username passwd" riesco a connettermi al db e quindi fare tutte le query che desidero. Questo però da linea di comando mentre io devo farlo fare alle mie pagine php.
L'unica cosa che non so fare è compilare php abilitando le chiamate di MSSQL (sai com'è vengo dal mondo windows e mi sto avvicinando ora a linux ), sapresti darmi una dritta su come fare?Inoltre mi stavo chiedendo, non può essere che il problema risieda proprio nella mia errata configurazione di PHP? Magari se lo compilo come dici tu, però abilitando anche qualche altro modulo come unixODBC (ammesso che esista), le mie pagine PHP dovrebbero funzionare, giusto? El GianGio |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Come è scritto al link sopra, devi compilare con l'opzione --with-mssql. Credo che questo sia un parametro che devi dare al file ./configure che trovi nella distro del sorgente di php...
Quindi: ./configure --with-mssql (=DIR lo devi mettere se non ti funziona) make make install |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Feb 2003
Messaggi: 321
|
Quote:
Nella pratica io faccio così: Prendo FreeTds e lo installo in questa maniera, ovviamente mettendomi all'interno della directory dove ho scompattato i sorgenti: ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 make make installNella configurazione di freetds ho messo tdsver=8.0 perché mi aggancio a MSSQL Server 2000, se hai versioni più vecchie o altre versioni devi verificare sulla documentazione di freetds. Considera che questo parametro può essere cambiato anche dopo la compilazione, basta andare a smanipolare sul file di configurazione di freetds... adesso il nome non mi sovviene ma basta guardare sul sito web. Poi passo all'installazione e compilazione di Php, che faccio in questa maniera, ovviamente mettendomi all'interno della directory dove ho scompattato i files sorgenti, e considerando di aver installato Apache2 dentro la cartella /usr/local/apache2: ./configure --prefix=/usr/local/Php --with-apxs2=/usr/local/apache2/bin/apxs --with-mssql=/usr/local/freetds make make installIn questo modo setti Php per lavorare con mssql. Attento però che se ti servono altre estensioni le devi esplicitare quando esegui il comando ./configure. Per capirci, per abilitare per esempio anche mysql devi metterci --with-mysql e pure --enable-mbstring... insomma sta a te decidere quali estensioni compilare ed abilitare a php.
__________________
Troy Bayliss: l'eroe dei 2 mondi!! W-SBK Champion e vincitore della gara MotoGP di Valencia 2006! |
|
|
|
|
|
|
#9 |
|
Junior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 12
|
Per chi è interessato e ha riscontrato il mio stesso problema, volevo dire che sono riuscito a trovare la soluzione.
In pratica il problema consisteva nella linea di codice php all'interno della pagina dove indicavo il dsn: Codice:
$dsn = "Driver={SQL Server};Server=$server;Database=$db;";
Codice:
[DSNname1] Driver = /pathTo/libtdsodbc.so (il percorso al file dei driver) Server = dbserver.exmple.com (oppure l'indirizzo ip del mio server) Database = dbname (il nome del db da interrogare) TDS_Version = 8.0 (la versione migliore per MS SQL) Codice:
$dsn = "DSNname1"; Spero che questo post sia di aiuto a qualcun'altro che, come me, è alle prime armi nel mondo linux e proviene dal mondo windows. Grazie a tutti per i consigli. Ciao! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:48.



















