Tags: Datei-Management, Scripts, Windows 10
Der in Windows 10 enthaltene Web-Server kann nicht nur statische Seiten ausliefern oder ASP-Code ausführen, sondern unterstützt auch PHP-Anwendungen. Allerdings muss man das Open-Source-Modul separat herunterladen und installieren.
Wer dynamische Web-Seiten auf Basis der Script-Sprache PHP entwickeln möchte, benötigt dafür keinen kompletten LAMP-Stack mehr, sei es in Form einer Linux-VM oder einer Windows-Implementierung wie XAMPP. Die IIS mit installiertem PHP-Modul und SQL Server Express erfüllen diesen Zweck meistens ebenfalls.
PHP mit Webplatform-Installer einrichten
Die scheinbar einfachste Variante, um die WWW-Dienste der IIS um PHP zu ergänzen, ist der Einsatz von Microsofts Webplatform-Installer. Dieses grafische Installationsprogramm richtet nicht nur IIS-Module ein, sondern bietet einen ganzen Fundus von Tools, SDKs, Datenbanken, PowerShell-Packs für Azure oder Web-Anwendungen wie Wikis oder CMS.
Entscheidet man sich dort für die Installation von PHP, dann bietet das Tool in der Regel mehrere Versionen davon an. Wenn man eine davon auswählt, dann fügt der Installer automatisch die Treiber für SQL Server sowie den PHP Manager für IIS hinzu.
Der anschließende Vorgang sollte die benötigten Komponenten herunterladen, installieren und den IIS dafür konfigurieren. Diesen Prozess kann man als Benutzer nicht beeinflussen und wenn etwas schiefläuft, dann helfen die dürftigen Fehlermeldungen nicht weiter.
Zu allem Überfluss lassen sich die installierten Module nicht mehr deinstallieren, weder über die Systemsteuerung noch über den Installer selbst. Zurück bleibt im schlimmsten Fall ein versauter Web-Server.
PHP manuell hinzufügen
Daher sollte man sich die Mühe machen und die relativ unkomplizierte manuelle Installation bevorzugen. Diese erfordert im ersten Schritt, dass man in der Systemsteuerung unter Programme => Programme und Features => Windows-Features aktivieren oder deaktivieren prüft, ob bei der Installation des Web-Servers das CGI-Modul mit eingerichtet wurde. Ist das nicht der Fall, kann man das hier gleich nachholen.
Nun besorgt man sich das passende PHP-Modul, das man von php.net herunterladen kann. Dort wählt man zum einen die gewünschte Version aus, zum anderen muss man sich zwischen der x86- und x64-Architektur entscheiden.
Darüber hinaus liegt PHP in einer Thread-Safe- und einer Non-Thread-Safe-Ausführung vor. Die IIS benötigen die Thread-Safe-Variante nicht, weil sich das FastCGI-Modul um das Management parallel eingehender Anfragen kümmert.
Nach dem Download des ZIP-Archivs entpackt man dieses und kopiert den Inhalt in ein Verzeichnis, zum Beispiel unter %ProgramFiles%\PHP. Anders als in einigen Anleitungen beschrieben, muss man nun nicht die php.ini editieren. Vielmehr lässt sich PHP einfacher über den IIS Manager einbinden.
Dazu klickt man im linken Abschnitt Verbindungen auf das Symbol für den Server und dann auf das Applet Handlerzuordnungen. Anschließend führt man den Befehl Modulzuordnung hinzufügen aus.
Dieser öffnet einen Dialog, in den man folgende Informationen eingibt:
- Anforderungspfad: *.php
- Modul: FastCgiModule
- Ausführbare Datei: <Pfad-zum-PHP-Verzeichnis>\php-cgi.exe
- Name: Sprechende Bezeichnung wie z.B. PHPFastCGI
Nach dem Speichern der eingegebenen Daten ist eventuell ein Neustart des Web-Servers erforderlich. Diesen kann man im IIS Manager im Abschnitt Aktionen veranlassen.
Um zu prüfen, ob die IIS nun tatsächlich PHP-Skripte aufrufen können, erstellt man eine Datei mit dem Inhalt
<?php phpinfo(); ?>
und kopiert sie unter dem Namen phpinfo.php in das webroot-Verzeichnis. Ruft man sie über die entsprechende URL im Browser auf, dann sollte sie detaillierte Informationen über die installierte PHP-Version ausgeben.
Täglich Know-how für IT-Pros mit unserem Newsletter
Ähnliche Beiträge
Weitere Links
13 Kommentare
Guten Tag und vielen Dank für die ganzen Tutorials die hier angeboten werden.
Zu meinem Problem.
Ich nutze Win 10 Enterprise x64 und bin Schritt für Schritt wie hier beschrieben vorgegangen.
IIS 10 ist aufgesetzt und funktioniert
PHP ist php-7.1.1-nts-Win32-VC14-x64
phpinfo.php liegt im wwroot, ich bekomme jedoch unter http://localhost/phpinfo.php eine 404 Meldung.
Ich bin jetzt alle Pfade und Ordnerstrukturen durchgegangen aber finde den Fehler einfach nicht.
Am besten erst einmal in die Ereignisanzeige schauen. Anschließend "Failed Request Tracing" aktivieren.
Man sollte vielleicht noch erwähnen, dass bei der manuellen Installation auch die passende Visual C++ Redistributable installiert werden muss, siehe PHP Download-Seite.
"Zutaten" für Windows 10 / Server 2016 (x64):
• IIS 10 mit aktiviertem CGI
• PHP 7.x (VC15 x64 Non Thread Safe) ZIP-Datei (Pfad könnte auch D:\bin\php lauten)
• Bei "Default Document" neuen Eintrag für das Standarddokument wie index.php hinzufügen, wenn standardmäßig index.php nicht immer mit angegeben werden soll
• Visual C++ Redistributable for Visual Studio 2017 X64 installieren
• IIS neu starten
• Sonst wie es in der Anleitung steht
Wenn alles erledigt wurde, klappt auch PHP bzw. PHP-Info :-)
Man sollte eventuell auf die "php53.exe" von der Seite php.iis.net verzichten, da die auch veraltet ist und eventuell Probleme machen könnte.
Ich mag persönlich eher Apache, nginx, und Debian aber wegen bestimmten Sachen geht nur Windows und da ist es schon net wenn der IIS auch PHP "spricht" :-)
Wer mag kann auch seine eigene Dateiendung die es noch nicht gibt, hinzufügen, bei Händer Mappings (Handlerzuordnung) entweder nach *.php was hinzufügen oder *.php durch die eigene Erweiterung ersetzen, ggf. bei "Default Document" einfach einen neuen Eintrag der gewünschten Erweiterung hinzufügen.
Die Anleitung ist im Prinzip "aktuell", nur dass kleine Anpassungen nötig sind.
Verwendet wurde zum Testen die Zip-Datei von "VS16 x64 Non Thread Safe (2021-Aug-25)" PHP 8.
Es ist sehr wichtig, dass CGI aktiviert ist, sonst fehlt der Eintrag im Modul "Handlerzuordnung" und dann klappt es natürlich auch nicht.
Kleine Abkürzung
CGI auf Windows 10 aktivieren:
Der Rest wie gehabt.
Falls CGI unter Handlerzuordnung nicht angezeigt wird, obwohl CGI installiert ist, muss nur der IIS neu gestartet werden, danach ist das Modul verfügbar.
Danke für die Anleitung, alles hat sofort geklappt!
Vielen Dank für die Anleitung.
Downloads und Installation unter Win10 erfolgreich.
PHP läuft jetzt in Vers 7.4.2 :)
Vielen Dank für die Anleitung.
Fragen:
01: Wo befindet sich das webroot Verzeichnis nach der automatischen Installation?
02: Wird auch das phpMyAdmin oder eine Alternative für die Datenbankverwaltung installiert? Falls ja, welche und wo finde ich sie?
Hallo!
phpinfo() funktioniert nach der Anleitung zwar, aber anscheinend kann das PHP so kein Multibyte Encoding, bekomme da immer einen error.
Laut einem anderen (Forum-)Thread soll das wohl nur in der thread-safe version drin sein?! siehe: https://forums.iis.net/t/1165520.aspx
Allerdings funktioniert der dortige Link zu mehr Informationen zu dem Thema nicht. Kann mir wer sagen, wie man das löst?
Hab das Problem zu Hause auf meinem iMac mit Apache/PHP nicht. Muss jetzt aber auf Windows-Laptopn arbeiten, am besten ohne großartige Installationen.
Eine Alternative bestünde darin, den LAMP-Stack im Subsystem für Linux zu installieren.
Danke, sehe ich mir mal an. Habe jetzt mal probiert, alle Multibyte-String Funktionen im Projekt auf normale zu ändern -> jetzt Error, weil keine SoapHeader-Class gefunden.
Irgendwie scheint diese PHP-Variante nur ein halbes PHP, bzw. eben ohne viele wichtige Module (Multibyte, SoapClient, wer weiß was noch) zu sein. :-(
Hallo!
Hat sich erledigt, es werden standard-mäßig einfach keine Extensions geladen, bzw. ist die Pfadangabe auch auskommentiert. Habe jetzt mal Multibyte, Soap und Openssl aktiviert. Mein Projekt läuft jetzt. :D
FastCgiModule is not a recognized native modul.
Was mach ich denn falsch ?
Vielen Dank