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.