Wegen eines neuen Softwareprojekts habe ich eben PHP 5 von http://php.net herunter geladen (msi-Installer) und unter Vista installiert. Das vom PHP-Team bereitgestellte Installationspaket scheint jedoch den unter Windows Vista neuen Internet Information Server 7 nicht korrekt konfigurieren zu können...
Also googlen wir schnell mal nach "PHP5 IIS7" und finden gleich einen Blog-Eintrag des Microsoft Entwicklers Bill Staples, der die Installation kurz beschreibt.
Leider bin ich trotz der Anleitung auf einige Fallstricke gestossen, die ich noch lösen musste:
- Der Internet Information Server (IIS) muss natürlich installiert werden. Dies geschieht unter Vista über "Systemsteuerung -> Programme und Funktionen", dann im linken Menü "Windows Funktionen ein- und ausschalten".
- Zu beachten ist, dass die Komponente "Internetinformationsdienste", die den IIS beinhaltet, im Gegensatz zum IIS6 unter Windows XP wesentlich mehr Module beinhaltet, die standardmässig nicht mit installiert werden. Wichtig ist dabei, dass man unter "WWW-Dienste -> Anwendungsentwicklungsfeatures" entweder ISAPI-Erweiterungen und ISAPI-Filter oder CGI installiert, je nach dem ob man PHP als CGI oder über ISAPI betreiben möchte.
- Man sollte keinesfalls das .msi-Paket von PHP verwenden, die automatische Konfiguration funktionierte zumindest bei mir nicht und hinterlies einen nicht funktionsfähigen IIS, der bei jeglichen Seitenaufrufen die Meldung "Service unavailable" lieferte. Dies lag daran, dass die ISAPI-Erweiterung php5isapi.dll nicht richtig eingebunden wurde. Leider lieferte die Ereignisnazeige zunächst keine sinnvolle Fehlermeldungen. Der einzige Hinweis aus der Ereignisanzeige war, dass der DefaultAppPool die Anfrage nicht in angemessener Zeit beantworten konnte. Nach der DeInstallation von PHP über "Systemsteuerung -> Programme und Funktionen" ergaben sich in der Ereignisanzeige weitere Fehlermeldungen, die auf eine noch aktive Handlerzuordnung hinwies. Eine solche war jedoch im Internetinformationsdienstemanager nicht sichtbar. Erst die Datei "c:\Windows\system32\inetsrv\config\applicationHost.config" offenbarte, dass der IIS versuchte, die mittlerweile wegen DeInstallation von PHP nicht mehr vorhandene Datei php5isapi.dll zu laden. Nach Löschen der entsprechenden Handler-Zeile unter dem Tag <system.webserver> funktionierte der IIS wieder wie vorher.
Anschliessend wird PHP installiert wie im Blog-Eintrag von Bill Staples beschrieben:
- PHP als .zip-Datei von www.php.net herunter laden und am besten nach c:\Inetpub entpacken. Anschliessend das neu erstellte Verzeichnis "php-versionsnr*" in "php" umbenennen.
- Die Benutzer IUSR sollte Leserechte auf das php-Verzeichnis sowie alle Unterverzeichnisse besitzen.
- Am besten man setzt dann noch über "Systemsteuerung -> System -> Erweiterte Systemeinstellungen" im Reiter "Erweitert" folgende Umgebungsvariablen. Dies gewährleistet, dass alle benötigten Bibliotheken und Konfigurationsdateien gefunden werden und nichts in das Windows-Systemverzeichnis kopiert werden muss:
- Zur System-Umgebungsvariablen PATH sollten die Verzeichnisse "c:\Inetpub\php" und "c:\Inetpub\php\sapi" hinzugefügt werden.
- Es sollte eine neue System-Ungebungsvariable PHPRC mit dem Wert "c:\Inetpub\php" hinzu gefügt werden.
- Um Sessions in PHP verwenden zu können, sind weitere Anpassungen an den NTFS-Rechten erforderlich. Die Anwendungspools des IIS7 verwenden zum Speichern von temporären Dateien nicht mehr alle das Windows-Temp-Verzeichnis, sondern aus Sicherheitsgründen (Abschottung der einzelnen Anwendungen voreinander) getrennte TEMP-Verzeichnisse. Folgender Artikel von Bill Staples beschreibt, wie man das Problem lösen kann, indem die richtigen Rechte gesetzt werden.
- Zum Schluss wird im Internetinformationsdienstemanager zunächst das Feature Handlerzuordnungen geöffnet und über das Aktionsmenü rechts eine Skriptzuordnung hinzugefügt. Als Anforderungspfad kann *.php für alle PHP-Dateien, als ausführbare Datei wird die php5isapi.dll im PHP-Verzeichnis angegeben. Der Name des Handlers kann beliebig gewählt werden.
- PHP sollte nun grundsätzlich lauffähig sein. Es fehlt nun noch die Anpassung der PHP-Umgebung in der Datei php.ini, um PHP selbst für die eigenen Anforderungen zu konfigurieren.
Jetzt kommentieren