Install-Guides dieser Art gibt es zwar bereits einige, aber irgendwie fehlte am Ende doch irgendwas. Meistens ist das dann auch noch der unauffälligste Punkt, wo der Admin dann am Ende eine ewiglange Fehlersuche (mit Stirn->Kopf Effekt) betreiben muss. Hier also der totale ugg.li „comprehensive“ Best-Practice-Guide um ein heute aktuelles PHP 5.x auf Windows Server 2012R2 korrekt und sicher zu installieren.
Der guide geht von einem „nackigen“ System und einer „Standard“-Awendung als Ziel aus, die keine absonderlichen Config-Eigenheiten benötigt.
- IIS-Rolle mit FastCGI, HTTP-Redirect und Authentifizierung installieren
- Server-Manager öffnen, Rollen hinzufügen
- „Webserver (IIS)“ anhaken, darunter (mindestens) hinzufügen: HTTP-Fehler, Standarddokument, Statischer Inhalt, HTTP-Umleitung, Standardauthentifizierung, HTTP-Protokollierung, CGI, ISAPI-Erweiterungen
- Das .NET Framework 3.5 FEature hinzufügen (wird nicht von PHP selbst gebraucht, aber von einigen
ModulenExtensions)
- Visual C++ Redistributable für Visual Studio 2012 Update 4 (oder höher) installieren (Voraussetzung für php*.exe). Je nach PHP (32bit oder 64bit) muss es auch die passende Version (32bit oder 64bit) sein.Achtung: Auch das x64 PHP hat einige
ModuleExtensions dabie, die noch in x86 (32bit) kompiliert sind. - PHP installieren
- Aktuelle PHP-Version herunterladen, die Non-Thread-Safe-Version, passend zur Plattform (x64). Die Thread-Sicherheit macht der IIS mit seinen Memorypools selber, an dieser Stelle wäre die Thread-Safe-Edition verschenkte Performace.
- In den Zielordner auspacken („c:\program files\php“ oder ähnliches). INSTALLER STINKEN.
- php.ini-production umbenennen in php.ini und wenn notwendig bearbeiten. Bewährt haben sich an dieser Stelle genauere Gedanken über „max_execution_time“, „max_input_time“, „memory_limit“, „open_basedir“, Temp-Pfade und so weiter.
- PHP im IIS als Handler für *.php anlegen
- Systemsteuerung -> System -> Erweiterte Systemeinstellungen -> Erweitert -> Umgebungsvariablen (ganz unten) -> Systemvarianbel „Path“ bearbeiten und „c:\php“ (Den Pfad zu PHP) hinzufügen. Das präventiert einige schwer zu findende Fehler mit nicht-gefundenen-externals.
- IIS Manager öffnen -> links in der Baumstruktur auf den Computernamen klicken und dann Rechts das Feature „Handlerzuordnungen“ öffnen
- Rechte MT -> „Modulzuordnung hinzufügen“
- Anforderungspfad: *.php
- Modul: FastCgiModule
- Ausführbare Datei: C:\Program Files\PHP\php-cgi.exe (Pfad zur php-cgi.exe)
- Name: FastCGI-PHP (oder etwas ähnlich aussagekräftiges)
Testen mit einer phpinfo(); und fertig. Jetzt spricht ersteinmal jede IIS-site PHP(5).
Für MySQL sind in der PHP.ini nur noch die extensions einzukommentieren und der extension_path zu setzen. Achtung, das sind (stand heute) 32bit Extensions.
Server-Error 500: PHP erzeugt einen Fehler 500 beim ausführen? C++ Redist prüfen und php.exe direkt an der Kommandozeile (als Administrator) aufrufen. Wenn der Intepreter ein Problem hat, sagt er es dann dort. Wenn es eine PHP-Kommandozeile gibt (zu erkennen an … nichts), läuft der Interpreter. Rechte checken und Eventlog lesen. Mit „quit“ die interactive PHP command line wieder verlassen.
Von der Visual C++ Redistributable für Visual Studio 2012 Update 4 ist im MS KB Artikel keine Rede…
Daran hat es hier gelegen. Die Installation über WPI 5.0 hat funktioniert. Aber erst nachdem ich .NET 3.5 installiert habe. (Server 2012 R2)
Vielen Dank!
Gerne, dank dir 🙂
Für PHP (egal welche Version) wird kein .net (egal welche version) benötigt. Für den Plattform-Installer schon, für den Modulkonfigurator auch, für das Setup vielleicht (das weiss ich nicht genau), aber für die PHP-Laufzeitumgebung nicht. Ich vermute eher das du eine Abhängigkeit mit dem Framework zusammen mitinstalliert hast … 😉
Seit Stunden mache ich hier rum, und bekam immer Fehler 500. Es sollte evtl. erwähnt werden das man die x86 Version des Visual C++ Redistributable für Visual Studio 2012 Update 4 benötigt.
Die Anleitung ist trotzdem sehr gut. Danke dafür.
VG
Jede Software braucht ihre Libraries immer in ihrer passenden Version, jedes x86 binary benötigt also die x86 runtimes. Das sollte eigentlich logisch sein, entschuldige. Ich habe den hinweis hinzugefügt 🙂
Ich mag cox, jetzt gehts. Thx!
PHP7 unterstützt kein IIS mehr.
Alternativ kann man auch das hier verwenden. https://www.mwiede.de/windows-php-webserver/
Vielleicht nicht unbedingt in Produktivumgebungen, aber für einen internen Einsatz ganz bestimmt 🙂
Hallo,
danke für die tolle Installationsanleitung.
PHP Info funktioniert, er zeigt mir Version 7.1.2 an. meine index.php wird auch aufgerufen, aber der include-Befahl wird nicht verarbeitet und er läd keine „Seite“ in die Seite.
Jemand eine Idee?
Soll nur ein Intranet werden. Server 2012R2
Gruß Hombi
Möglicherweise verwendest du Server Side Includes (), anstelle von PHPs eingebautem include (include („foo.php“)). Wenn das der Fall ist, musst du das Windows IIS Feature „SSI“ (Server side Includes) installieren und aktivieren. Wenn du PHP-Includes verwendest, schau ob in deiner PHP.INI die includes die verwendest (url_include, file_include ….) erlaubt sind.