In einem gerade beendeten Projekt musste ich mich mal wieder mit Windows herumschlagen. Diese Klickerei ... gruselig.
Da dieser Blog auch ein Notizbuch ist, möchte ich hier aufschreiben, wie man unter Windows Server 2012 einen IIS 8.5 mit PHP 5.5.11 und eine Anbindung an SQL Server Express 2014 hin bekommt.
Alles nur stichpunktartig, aber m. E. völlig ausreichend.
Windows Server 2012 R2
Man kann sich für lau eine Testversion herunterladen, z. B. als ISO-Datei. Sie ist nach Aktivierung für 180 Tage nutzbar.
Ich habe die "Standard Testversion mit grafischer Oberfläche" in einer VirtualBox mit 2GB RAM und 25GB HD installiert. Das langt massig. Hier auf meinem Lenovo X230, 8 GB, 4 Kerne, 2.9 GHz mit Ubuntu 14.4 läuft das ganz fluffig.
VirtualBox Gasterweiterungen
Danach sollte man die Gasterweiterungen installieren. Man findet sie, wenn Windows im Fenster läuft, oben im Menü.
Helferlein
Dann kommen erstmal ein paar Programme drauf, die unverzichtbar sind:
- natürlich Firefox - der IE ist so komisch voreingestellt, er ist quasi unbenutzbar. Probier es aus, du wirst verzweifeln. Versuch gar nicht erst, das zu beheben. Das ist echt nicht nötig.
- Notepad++ - ein ganz brauchbarer Texteditor. Natürlich ist das nur eine Krücke gegen den VI 🙂
- den Web Platform Installer (WPI) - Das Ding kann ein paar Serverkomponenten installieren. Vorsicht: installieren ja, deinstallieren kann das Teil nicht. Man merkt, dass es aus Redmond kommt. Und damit installierte Sachen wieder wegzubekommen ist echt schwierig.
IIS (das ist ein Web Server!)
Die Installation macht man mit dem Server Manager:
- Rechts oben auf Manage
- Add Roles and features
- Next, Next, Next
- Web Server (IIS) Add Features
- Next, Next, Next, Next
- Install
SQL Server 2014 Express
Den gibt's auch gratis ... Microsoft, was ist los mit dir? Man könnte meinen ihr hättet was verstanden! Naja, der Druck durch MySQL ist wohl einfach zu stark.
Hier eine Version, die mit SQLEXPRWT beginnt, auswählen. WT heißt "with tools" ... Der Download läuft? Dann aber erstmal mit dem Web Platform Installer (WPI) ".Net 3.5 SP1" installieren.
Die Installation von SQL Express geht so:
- "New SQL-Server Standalone bla bla bla ..."
- Feature Selection: nix ändern
- Instance Configuration: "Named instance" klicken, weiter, weiter, weiter usw.
- Database Engine Configuration: hier habe ich "Mixed Mode" gewählt und ein Passwort vergeben - Das bedeutet, dass man auch User in der DB einrichten kann und nicht nur die User, die unter Windows eingerichtet sind, verwenden kann.
Noch nie war Windows einfacher, ehrlich. Ich war teilweise echt begeistert. Zumindest bis die ersten Probleme kamen und die Lösungen mal wieder nix mit den Fehlermeldungen zu tun hatten. Da hat sich seit den 80ern echt nichts dran geändert.
PHP 5.5.11
Jetzt kommt Butter bei die Fische:
- PHP 5.5.11 per WPI installieren
- fastcgi-Fehler beheben: "Visual C++ Redistributable for Visual Studio 2012 (Update 4)" installieren - vcredist_x86.exe, nicht x64! Dies ist nötig, weil irgendein PHP-Modul mit Visual C++ 2012 kompiliert wurde und wir die Libs (dll) noch nicht auf dem Rechner haben. WPI weiß das aber nicht.
PHP version prüfen:
- Datei C:\inetpub\wwwroot\phpinfo.php anlegen. Inhalt:
<?php echo phpinfo(); ?>
- http://localhost/phpinfo.php aufrufen
PHP Driver für SQL Server installieren (v3.1 ist für PHP 5.5):
- hier: http://www.microsoft.com/en-us/download/details.aspx?id=20098 - da es für PHP 5.6 noch keine Treiber gibt, bleibt uns nur 5.5. Auch das weiß WPI noch nicht.
- SQLSRV31.EXE ausführen und als Pfad zum Entpacken "C:\Program Files (x86)\PHP\v5.5\ext\" angeben!
- in php.ini ganz unten eintragen: "
extension=php_sqlsrv_55_nts.dll
"
Test ob SQL Server Extension geladen werden kann:
- in der sogenannten Powershell (hier geht sogar
ls
) dies ausführen:php -d display_startup_errors=1 -d error_reporting=-1 -d display_errors -c "C:\Program Files (x86)\PHP\v5.5\php.ini" -m
- es sollte
sqlsrv
im output erscheinen
Fertig
So, das war's - jetzt am besten die VM ausmachen, klonen und zur Seite legen, bevor du wieder irgendwas kaputt machst, Junge!