Web Server IIS: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „= IIS mit PHP auf Windows installieren = == Einführung == * IIS (Internet Information Services) ist der Webserver von Microsoft. * PHP wird unter IIS über F…“
 
Keine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
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 ==
* PHP als Non-Thread-Safe (NTS) Version für Windows herunterladen:
* PHP als Non-Thread-Safe (NTS) Version für Windows herunterladen:
  Invoke-WebRequest https://windows.php.net/downloads/releases/php-8.2.12-nts-Win32-vs16-x64.zip -OutFile C:\php.zip
  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:
* Entpacken nach C:\php:
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).