Getestet unter Debian Lenny+Squeeze in Kombination mit einem MS-SQL Server 2008

Ausgangssituation / Ziel:

Wir haben einen Debian-Server mit Apache2+PHP bereits fertig eingerichtet. Außerdem haben wir einen Windows-Rechner mit einem SQL-Server laufen, auf dem eine Datenbank eingerichtet ist. Wir wollen nun über PHP auf diese Datenbank zugreifen und Daten auslesen, bzw. speichern.

Anleitung:

Zuerst müssen die benötigten Pakete heruntergeladen werden:

apt-get install tdsodbc libct3 unixodbc php5-odbc

Jetzt legen wir ein Template an, um den ODBC-Treiber für FreeTDS zu registrieren. Außerdem wird eine DSN-Verbindung angelegt.

vi /etc/freetds/tds.driver.template

Das hier einfügen:

[TDS]
Description = FreeTDS Driver for Linux & MSSQL on Win32
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so

Jetzt die entsprechende DSN für die Datenbank anlegen:

vi /etc/freetds/tds.dsn.template

Die Verbindungs-Informationen eintragen:

[DATENBANK1]
Description = Meine Verbindung
Driver = TDS
Trace = No
Database = MEINE-DATENBANK
Server = MEIN-WINDOWS-SQL-SERVER
Port = 1433

Jetzt müssen diese Templates unixODBC bekannt gemacht werden:

odbcinst -i -d -f /etc/freetds/tds.driver.template

Die DSN-Verbindung bekannt machen (nur für den aktuellen Benutzer):

odbcinst -i -s -f /etc/freetds/tds.dsn.template

Die DSN-Verbindung bekannt machen (systemweit, würde ich empfehlen):

odbcinst -i -s -l -f /etc/freetds/tds.dsn.template

Die ODBC-Erweiterung für PHP aktivieren:

vi /etc/php5/apache2/php.ini

extension = odbc.so

Apache neustarten

/etc/init.d/apache2 restart

Nun kann die Verbindung getestet werden, mit dem Tool isql:

isql -v DSN-Name Benutzer Passwort

Wenn alles geklappt hat, sollte man ein SQL Abfrage-Fenster sehen.

Nun kann man sich über PHP mit der Datenbank verbinden.