Sto usando mac computer OSX 10.9. Freetds e unixODBC sono già installati sul mio computer e aggiunti come estensione a php, cercando di connettersi a un server MSSQL remoto. Di seguito è riportato il mio test di connessione:php dblib, Errore: SQLSTATE [HY000] Nome macchina host sconosciuto (gravità 2)
<?php
$dbh = new PDO('dblib:host=Hostname ;dbname=Dbname', 'user', 'pw');
if (!$dbh) {
die('Something went wrong while connecting to MSSQL');
}
?>
Il file di log di errore spettacolo:
[error] [client 127.0.0.1] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] Unknown host machine name (severity 2)
Quale potrebbe essere il problema? Sembra che i miei FreeTDS e unixODBC stanno lavorando bene se uso terminale per collegare allo stesso database, come di seguito:
$ isql Hostname user pw
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
e
$ tsql -S Hostname -U user
Password:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
qui è la mia freetds.conf
[global]
# TDS protocol version
tds version = 8.0
[Hostname]
host = IP
port = 1433
tds version = 8.0
client charset = UTF-8 ##needed on MAC OS X
dump file = /tmp/freetds.log
e mio odbc.ini
[Hostname]
#Driver=/usr/local/lib/libtdsodbc.so
Driver = /usr/local/Cellar/freetds/0.91_2/lib/libtdsodbc.so
Trace=No
Server=IP
Port=1433
TDS_Version=8.0
client charset = UTF-8
my phpinfo() mostra che l'estensione è stata aggiunta, c'è dblib nella sezione PDO e la sezione pdo_dblib ha i freetds abilitati per Flavor abilitati.
Quindi qual è il problema? Qualche idea su cosa dovrei fare? Qualsiasi assistenza sarà molto apprezzata.
qui è la mia ODBCINST.INI:
[freetdS]
Description = v0.63 with protocol v8.0
Driver = /usr/local/Cellar/freetds/0.91_2/lib/libtdsodbc.so
Hai riavviato Apache (o qualsiasi server Web che stai utilizzando) dopo aver modificato questi file di configurazione? –
Inoltre, ho notato nel tuo odbc.ini che "Hostname" è scritto male (almeno il codice che mostri qui) - lo mostri come "Hostnmae". –
[La mia risposta] (http://stackoverflow.com/questions/20163776/connect-php-to-mssql-via-pdo-odbc/20165384#20165384) a una domanda simile potrebbe essere utile. Dai un'occhiata alla configurazione di 'odbcinst.ini' e nel mio file' odbc.ini' ho un parametro 'ServerName' ma non un parametro' Server'. –