Web Server IIS: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 4: Zeile 4:
 
* IIS (Internet Information Services) ist der Webserver von Microsoft.
 
* 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.
 
* 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.
+
* Diese Anleitung zeigt die Installation von IIS und PHP vollständig über die PowerShell – ohne GUI.
  
 
== IIS Installation ==
 
== IIS Installation ==
Zeile 13: Zeile 13:
 
  Get-WindowsFeature Web-Server
 
  Get-WindowsFeature Web-Server
  
* Test im Browser: http://localhost
+
* IIS-Dienst starten:
 +
Start-Service W3SVC
 +
 
 +
* Test im Browser: http://localhost (IIS-Startseite sollte erscheinen)
 +
 
 +
== 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 Installation ==
Zeile 30: Zeile 39:
 
  & $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/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']"
 
  & $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 ==
 
== Funktionstest ==
Zeile 39: Zeile 53:
 
  </pre>
 
  </pre>
  
* Aufruf im Browser: http://localhost/info.php
+
* IIS neu starten:
 +
iisreset
 +
 
 +
* Aufruf im Browser oder per curl: http://localhost/info.php
  
 
== Hinweise ==
 
== Hinweise ==
 
* Immer die NTS-Version von PHP verwenden, da diese für FastCGI vorgesehen ist.
 
* 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.
 
* 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).
 
* Erweiterungen werden in der php.ini aktiviert (z. B. mysqli, openssl).

Aktuelle Version vom 25. September 2025, 08:59 Uhr

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
  • IIS-Dienst starten:
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
  • Entpacken nach C:\php:
Expand-Archive C:\php.zip -DestinationPath C:\php
  • php.ini aktivieren:
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();
 ?>
 
  • IIS neu starten:
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).