IIS mit PHP auf Windows installieren
Einführung
- IIS (Internet Information Services) ist der Webserver von Microsoft.
- PHP wird unter IIS über FastCGI eingebunden, da dies die einzige stabile und offiziell unterstützte Methode ist.
- Diese Anleitung zeigt die Installation von IIS und PHP vollständig über die PowerShell – ohne GUI.
IIS Installation
- Zuerst die IIS-Rolle mit FastCGI installieren:
Install-WindowsFeature Web-Server, Web-CGI -IncludeManagementTools
- Kontrolle, ob IIS installiert wurde:
Get-WindowsFeature Web-Server
Start-Service W3SVC
Visual C++ Redistributable
- PHP benötigt zwingend die Microsoft Visual C++ Runtime.
- Download und Installation (x64):
Invoke-WebRequest https://aka.ms/vs/17/release/vc_redist.x64.exe -OutFile C:\vc_redist.x64.exe
Start-Process C:\vc_redist.x64.exe -ArgumentList "/install /quiet /norestart" -Wait
PHP Installation
- PHP als Non-Thread-Safe (NTS) Version für Windows herunterladen:
Invoke-WebRequest https://windows.php.net/downloads/releases/php-8.2.29-nts-Win32-vs16-x64.zip -OutFile C:\php.zip
Expand-Archive C:\php.zip -DestinationPath C:\php
Copy-Item C:\php\php.ini-production C:\php\php.ini
PHP in IIS einbinden
- PHP als FastCGI registrieren:
$phpPath = "C:\php\php-cgi.exe"
& $env:windir\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='$phpPath']"
& $env:windir\system32\inetsrv\appcmd.exe set config -section:system.webServer/handlers /+"[name='PHP-FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='$phpPath',resourceType='Either']"
Firewall freischalten
- HTTP (Port 80) und HTTPS (Port 443) in der Windows-Firewall öffnen:
New-NetFirewallRule -DisplayName "Allow_HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "Allow_HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
Funktionstest
- Testdatei anlegen in C:\inetpub\wwwroot\info.php
<?php
phpinfo();
?>
iisreset
Hinweise
- Immer die NTS-Version von PHP verwenden, da diese für FastCGI vorgesehen ist.
- Die Visual C++ Redistributable ist Pflicht, sonst startet PHP nicht.
- Mehrere PHP-Versionen können parallel installiert und über FastCGI-Pools getrennt genutzt werden.
- Erweiterungen werden in der php.ini aktiviert (z. B. mysqli, openssl).