Microsoft SQL Server Express in PHP verwenden

sql-server-php-logoWer PHP hört, denkt meist auch gleich an MySQL, was daran liegen mag, dass PHP für die interessierten Einsteiger meist auf dem Wege einer XAMPP-Installation seinen Weg auf die Festplatte findet. Und da gehört MySQL ebenfalls zum Lieferumfang. Vielleicht liegt auch darin der Irrglaube begründet, dass man PHP nicht ohne MySQL verwenden bzw. ausführen könnte. Fakt ist natürlich, dass man einen Webserver benötigt, der PHP ausführen kann. Ohne den geht es nicht – und ist im Fall von XAMPP Apache.

Und wer PHP nun auch zusammen mit SQL verwenden möchte, greift da natürlich – sofern er sich nicht die Mühe macht, alles selbst aufzusetzen – zu XAMPP und bekommt damit phpMyAdmin an die Hand gegeben. Abgesehen davon, dass ich diese Weboberfläche trotz des Funktionsumfangs für so ziemlich das unhandlichste DBMS halte, kann PHP natürlich auch mit anderen SQL-Datenbanksystemen zusammen arbeiten. Dafür wird dann selbstredend ein anderes DMBS benötigt.

In einem Projekt musste ich zum Beispiel PostgreSQL verwenden und mittels PDO Zugriffe implementieren. Das im Installationspaket von PostgreSQL enthaltene, allerdings abwählbare, DBMS pgAdmin ist das PostgreSQL Pendant zu phpMyAdmin. Optisch und strukturell zwar etwas frischer, nur auch irgendwie gruselig. Und etwas arg spartanisch, wie mir bei der ersten Verwendung schien. Daher griff ich übrigens als DBMS zu DBeaver, was sich für MySQL selbstverständlich auch verwenden lässt. DBeaver kommt auch mit SQL Server von Microsoft klar, die Einrichtung ist jedoch ein wenig tricky, wenn man auf die Express-Variante setzt. Erste Versuche, DBeaver auch dafür zu verwenden schlugen fehl. Aus Zeitgründen griff ich dann einfachheitshalber zum SQL Server Management Studio von Microsoft. Außerdem hatte ich in meiner Umschulung auch schon Kontakt mit dem SSMS.

Um neben mySQL PostgreSQL in PHP verwenden zu können, muss man lediglich einen Eintrag in der php.ini einkommentieren. Bei SQL Server benötigt man ein kleines bisschen mehr Aufwand.

Zu aller erst muss man seine installierte PHP Version identifizieren, anschließend von der Microsoft-Seite das passende Treiberpaket herunterladen. Selbiges installieren/entpacken und die darin befindliche .dll in den Erweiterungsordner der PHP Installation kopieren. Zu guter Letzt muss dann noch der PHP Installation die neue Erweiterung mit einem Eintrag in der php.ini bekannt gemacht werden. Wie mache ich das?

PHP Version identifizieren

Nutzt man XAMPP, reicht ein Klick auf den Apache Admin-Button in XAMPP. Die Versionsnummer in der Welcome to XAMPP Zeile gibt (unter Windows) die PHP Version an. Alternativ kann man die Funktion phpinfo() in einem beliebigen PHP-Dokument speichern und dieses im Browser aufrufen. Die PHP Version wird oben links angezeigt.

SQL Server Treiber herunterladen

Ist das geschehen, sollte man sich den dazu passenden SQL Server Treiber von der Microsoftseite herunterladen. Es gilt, die Systemvoraussetzungen zu lesen. Denn zwar unterstützt Treiberpaket 3.2 zwar PHP 5.6.4+, nur nicht Windows 10. Der Download ist bei den Systemanforderungen in der Microsoft Dokumentation dazu verlinkt.

Installation der SQL Server Treiber

Die zuvor heruntergeladenen Treiber kommen in einer exe-Datei. Diese kann statt mit einem Doppelklick auch mit 7zip geöffnet und entpackt werden. Darin enthalten: Ein Stapel dll-Dateien. Hier sucht man sich die dll’s für seine PHP Version – MS packt da immer ein paar Versionen zusammen in ein Paket – heraus und kopiert diese in das Verzeichnis xampp\php\ext. Alternativ eben in den Erweiterungsordner seiner PHP-Installation.

Aktivierung der SQL Server Treiber

Zum Abschluss müssen die Treiber der PHP Installation noch bekannt gemacht werden, damit diese auch geladen werden können. Allein das Vorhandensein ist nicht ausreichend. Um das zu bewerkstelligen, suche man sich die php.ini (xampp\php\php.ini) und öffne diese.

Wer die Treiber an einer logischen Stelle eintragen möchte, kann nach den anderen SQL-Einträgen suchen und die SQL Server Treiber darunter laden lassen. So habe ich es gemacht. Folgende Einträge sind zu machen, wobei nach dem = die Dateinamen eingefügt werden:

  • extension=php_sqlsrv_7_ts_x86.dll
  • extension=php_pdo_sqlsrv_7_ts_x86.dll

Neustart des Webservers

Damit man die Treiber nun auch in PHP verwenden kann, sollte der Webserver neu gestartet werden. Der hat von seinem Glück nämlich noch nichts mitbekommen. XAMPP macht es wieder einfach: Apache stoppen und wieder starten. Falls als Dienst installiert, jeweils die User Account Control Meldung mit ja bestätigen.

Fertig.

Ob alles korrekt installiert wurde, verrät einem die PHP Info-Seite, aufzurufen wie unter Punkt 1. beschrieben. Direkt in dem Kasten, der diverse Dinge rund um PHP zusammenfasst, findet man in der Zeile Registered PHP Streams nun hoffentlich auch den Eintrag sqlsrv vor. Ebenso sollte dieser Eintrag bei den PDO Treibern zu finden sein, sowie einen eigenen pdo_sqlsrv Eintrag erzeugt haben. Dieser verrät auch die Treiberpaketversion.

phpinfo-01

phpinfo-02-PDO

phpinfo-03-pdo_sqlsrv

phpinfo-04-sqlsrv

Wer auf eine SQL Azure Infrastruktur zugreifen möchte, verfährt im Übrigen bis hierhin ebenso.

In der PHP Dokumentation erfährt man nun, wie man eine MS SQL Server Datenbankverbindung via PDO herstellen kann.

Hinweis:

Bei lokalem Einsatz auf einem Rechner scheint die lokale Adresse nicht zu funktionieren. Im PDO Objekt muss der String für den Servernamen auch der Name sein. Die 127.0.0.1 oder localhost selbst oder die Server-IP (die LAN IP des Rechners) funktionierten lokal bei mir nicht. Hier musste ich explizit den Rechnernamen und die SQL Server-Instanz durch Backslash getrennt angeben: RECHNERNAME\SERVERNAME. Bei Remotezugriff auf eine entfernte SQL Server Installation war es hingegen nötig, die korrekte IP der Server-Maschine statt des Rechnernamens anzugeben. Schema natürlich wie im Absatz oben. Habe das nicht noch mal gegen geprüft, kann also auch sein, dass mich irre. Bin mir da nicht zu 100% sicher.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.