Ich verwende den Mac-Computer OSX 10.9. Freetds und unixODBC sind bereits auf meinem Computer installiert und wurden als Erweiterung zu PHP hinzugefügt, um eine Verbindung zu einem entfernten MSSQL-Server herzustellen. Unten ist meine Verbindungsprüfung:php dblib, Fehler: SQLSTATE [HY000] Unbekannter Name des Host-Rechners (Schweregrad 2)
<?php
$dbh = new PDO('dblib:host=Hostname ;dbname=Dbname', 'user', 'pw');
if (!$dbh) {
die('Something went wrong while connecting to MSSQL');
}
?>
Die Datei anzeigen Fehlerprotokolle:
[error] [client 127.0.0.1] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] Unknown host machine name (severity 2)
Was könnte das Problem sein? Es scheint, dass meine freetds und unixODBC arbeiten gut, wenn ich Terminal verwenden, wie unten auf die gleiche Datenbank verbinden:
$ isql Hostname user pw
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
und
$ tsql -S Hostname -U user
Password:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
hier ist mein 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
und meine 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
mein phpinfo() zeigt, dass die Erweiterung hinzugefügt wurde, gibt es dblib in PDO Abschnitt und pdo_dblib Abschnitt haben Treiber Flavour aktiviert freetds.
Also, was ist das Problem? Irgendeine Idee von was ich tun sollte? Jede Hilfe wird sehr geschätzt.
hier ist mein odbcinst.ini:
[freetdS]
Description = v0.63 with protocol v8.0
Driver = /usr/local/Cellar/freetds/0.91_2/lib/libtdsodbc.so
Haben Sie Apache (oder welchen Web-Server, den Sie verwenden) neu gestartet, nachdem Sie diese Konfigurationsdateien geändert haben? –
Ich bemerke auch in deiner odbc.ini, dass "Hostname" falsch geschrieben ist (zumindest der Code, den du hier zeigst) - du zeigst es als 'Hostnmae'. –
[Meine Antwort] (http://stackoverflow.com/questions/20163776/connect-php-to-mssql-via-pdo-odbc/20165384#20165384) auf eine ähnliche Frage kann hilfreich sein. Schauen Sie sich die 'odbcinst.ini' Konfiguration an und in meiner' odbc.ini' Datei habe ich einen 'ServerName' Parameter aber keinen' Server' Parameter. –