PHP unter Windows war schon immer eine Odysse. Inzwischen ist es zwar sehr einfach möglich PHP direkt zu installieren, ja sogar die FastCGI Konfiguration im IIS klappt automatisch, doch sobald man auf die Idee kommt sich mit dem SQL Server verbinden zu wollen, wird es spannend.
Seit PHP 5.2.0 ist der Treiber für den SQL-Server standardmäßig nicht mehr bei PHP mitgeliefert, da es seitdem einen Treiber von Microsoft gibt, für den sogar offiziel Support geleistet wird und ja sogar in Open Source. Mittlerweile ist der Treiber in der Version 2.0 erhältlich und liefert eine Vielzahl von DLL-Dateien mit, welche für die verschiedenen PHP-Versionen gedacht sind (Version, Compiler, Threadsicherheit).
Hat man den richtigen Treiber in das ext-Verzeichnis kopiert und in der php.ini eingetragen zeigt sich der Treiber in phpinfo() unter dem unscheinbaren Namen sqlsrv.
Die Suche nach dem richtigen Treiber kann man sich ersparen, indem PHP sowie den Treiber über den Web Platform installer installiert werden.
Doch beim Testen meldet PHP erst mal nichts, dafür muss das Error Reporting in der php.ini aktiviert werden. Dies geschieht indem display_errors = On gesetzt wird.
Dann erscheint die Meldung „Call to undefined function mssql_connect()“.
Hier steckt der Teufel im Detail, denn die in der PHP-Dokumentation erwähnten Befehle sind für den alten PHP-eigenen Treiber gedacht. Microsoft lässt einen zum Glück nicht im Stich und stellt in der MSDN eine API-Referenz bereit: http://msdn.microsoft.com/library/cc296152(v=SQL.90).aspx
Der Wehrmutstropfen dabei ist, dass nicht nur die Befehle anders heißen, als bisher, sondern obendrein auch noch die Parameter geändert wurden. Das bedeutet also viel Spaß beim Anpassen bereits existierender Software.
Dies weckt alte Erinnerungen an die Umstellung von PHP 3 auf PHP 4, als die Servervariablen alle nun unter einem Array erreichbar waren und alle Anwendungen angepasst werden mussten, was wirklich ärgerlich war.
Aber immerhin: Es funktioniert!