IIS und PHP für Windows installieren • Aidex  • Kontakt  • Datenschutz  • EN
Intranet-Anwendungen sind Pro­gramme, die nur einem ge­schlos­senen Nutzer­kreis im loka­len Netz­werk bereit­gestellt wer­den. Die Dar­stel­lung er­folgt oft­mals in einem Browser, z.B. Fire­fox, Edge, Chrome. Das Dar­stel­lung der An­wen­dung ist wie eine Internet­seite, je­doch stam­men die In­halte nicht von außer­halb, son­dern vom firmen­eigenen Server.

Ein Vorteil einer Intranet-Anwendung im Browser ist, dass mehrere Nutzer gleich­zeitig mit der glei­chen Daten­bank arbei­ten kön­nen. Außerdem braucht das Pro­gramm nicht auf jedem Com­puter in­stal­liert zu wer­den und es ist vom Betriebs­system unab­hängig, d.h. es läuft auf Win­dows, Mac, Linux, evtl. einem Tablet/Pad oder Smart­phone. Und im Falle eines Pro­gramm-Updates ge­nügt es, die neue Ver­sion ein­mal auf dem zentra­len Ser­ver zu in­stal­lieren.

Wenn der Server ein Windows-Betriebs­system hat, kann man die zu Win­dows ge­höri­gen IIS (Inter­net Infor­mation Ser­vices) als Web­server-Soft­ware nutzen, siehe unten. Auf Linux wird hin­gegen meis­tens der NGINX oder der Apache HTTP Ser­ver ein­ge­setzt.
Die folgenden Abschnitte sind eine Anlei­tung zur Akti­vie­rung von IIS unter Win­dows und zum Ein­rich­ten von PHP.

Im Bereich des Internets und Intranets ist PHP die am weites­ten ver­brei­tete Pro­grammier­sprache, die auf dem Ser­ver läuft und ins­be­son­dere zur Er­zeu­gung dyna­mi­scher Web­seiten ge­nutzt wird. 78 % aller Web­sites nut­zen PHP (Stand 2024).
Außerdem ein Trend seit 2024: ↗Unternehmen stel­len ihre PHP-An­wen­dun­gen von Cloud auf On-Premises um.

KI-Bild symbolisiert einen Webserver
KI-Symbolbild
IIS in Windows aktivieren

Die IIS (Internet Information Services) sind Bestand­teil von Win­dows. Wenn Sie die IIS (auf deutsch: Internet­informations­dienste) in den Ein­stel­lun­gen akti­vie­ren, küm­mert sich Win­dows um die Instal­la­tion und Updates.

Menüs in Windows 10 ...
Klicken Sie auf das Start-Menü > Einstellungen > Apps
> dort ganz unten: Programme und Features
> in dem weiteren Fenster: Windows-Features akti­vieren
> auswählen: Internet­informations­dienste

Außerdem sollten Sie Folgendes akti­vieren:
WWW-Dienste > Sicherheit > URL-Autori­sie­rung

Die URL-Autorisierung wird benötigt, um z.B. den äußeren Zugriff auf be­stimmte Unter­ordner sper­ren zu kön­nen. Bei Apache nutzt man dazu eine Konfi­gura­tions­datei namens ".htaccess", beim IIS ist es hin­gegen eine XML-Datei namens "web.config" im be­tref­fen­den Ordner. Dazu unten mehr.

Nachdem Sie Ihre Auswahl mit Ok be­stätigt haben, akti­viert Win­dows den IIS (Web­server) und legt ein Web-Root-Verzeich­nis auf Ihrer Fest­platte an, siehe C:\inetpub\wwwroot\

Dass der Webserver aktiv ist, kön­nen Sie prü­fen, in­dem Sie in Ihrem Web­browser ein­geben: http://localhost/ oder http://127.0.0.1/
PHP installieren

Laden Sie PHP für Windows von php.net herun­ter, unter
https://windows.php.net/download.
Es gibt keinen Installer, sondern eine .ZIP-Datei. Nehmen Sie NTS-Version (Non-Thread Safe), die für Win­dows IIS em­pfoh­len wird.

Entpacken Sie die ZIP-Datei in einen neuen Ordner, dessen Name (und ge­samter Pfad) kein Leer­zeichen ent­hal­ten darf. In der Doku­men­ta­tion wird des­halb der Ordner C:\PHP\ vor­ge­schla­gen.
Bei einem deutschen Windows, wo der Ordner "C:\Program Files" (mit Leer­zeichen) in "C:\Programme" über­setzt wird, kön­nen Sie auch C:\Programme\PHP\ nehmen (getes­tet).

Im entpackten PHP-Ordner finden Sie eine Datei namens "php.ini-production". Kopie­ren Sie die Datei und nen­nen Sie die Kopie in "php.ini" um. Bei Be­darf kön­nen Sie in der php.ini eigene Ein­stel­lun­gen vor­nehmen.

Der PHP-Ordner sollte nur mit Admin-Rechten be­schreib­bar sein (was im Pro­gramme-Ordner ge­geben ist), damit der Ord­ner nicht mani­pu­liert werden kann.

IIS für PHP konfigurieren

Abschließend muss dem IIS mit­geteilt wer­den, wo er den PHP-Ordner fin­det. Öffnen Sie dazu den IIS-Manager, indem Sie am Windows-Start­menü mit Rechts­klick 'Ausführen' wählen und dort "inetmgr" ein­geben.

Es öffnet sich das Verwaltungs­programm.
Klicken Sie im linken Be­reich auf Ihren Com­puter­namen. Wählen Sie dann im mitt­le­ren Be­reich "Handler­zuord­nungen". Wählen Sie im rech­ten Be­reich: "Modul­zuord­nung hin­zu­fügen".

Setzen Sie ...
  • "Anforderungspfad": *.php
  • "Modul" auf FastCgiModule
  • "Ausführbare Datei" auf den Pfad zur Datei php-cgi.exe in Ihrem PHP-Ordner, z.B. C:\Programme\PHP\php-cgi.exe
  • "Name" z.B. auf "PHP" (oder beliebig).
  • Klicken Sie auf Ok,
  • und dann auf Ja, wenn Sie gefragt werden, ob Sie eine FastCGI-Anwendung erstellen möchten.
PHP testen

Um auszuprobieren, ob PHP und der IIS Web­server richtig zusam­men­arbei­ten, brau­chen Sie eine .php-Datei, die im Web-Root ab­ge­legt ist. Erstel­len Sie z.B. eine Datei "phpinfo.php" mit fol­gen­dem Inhalt:
<?php
  phpinfo();
?>

Speichern Sie die Datei in: C:\inetpub\wwwroot\
Sie können die Datei dann ein­fach im Browser auf­rufen:
http://localhost/phpinfo.php

Anstelle des Quellcodes sollten Sie eine aus­führ­liche Seite an­ge­zeigt be­kom­men, die alle Ein­stel­lun­gen von PHP auf­listet.

Ersatz für .htaccess beim IIS

Im Apache Webserver ist es üblich, dass in einzel­nen Ordnern eine Konfi­gura­tions­datei namens ".htaccess" hinter­legt wer­den kann, die steuert, welche Eigen­schaf­ten der Ordner hat.
Hingegen muss für den Windows IIS eine XML-Datei namens "web.config" in den be­tref­fen­den Ordner ge­speichert wer­den, um ihn indi­vi­duell zu konfi­gu­rie­ren.

"web.config" Datei, um Zugriffe von außen zu unter­binden ... (das Fol­gende ent­spricht "deny from all" in einer .htaccess-Datei)

<configuration>
  <system.webServer>
    <security>
      <authorization>
        <remove users="*" roles="" verbs="" />
        <add accessType="Deny" users="*" />
      </authorization>
    </security>
  </system.webServer>
</configuration>

Da wir hier die PHP-Instal­la­tion be­schrie­ben haben, ist es auch inte­res­sant, Standard­datei­namen defi­nie­ren zu kön­nen, die beim Ab­ruf einer bloßen Ordner-Adresse ge­sucht wer­den sollen.

"web.config" Datei, um index.php als Default Document zu setzen ...

<configuration>
  <system.webServer>
    <defaultDocument>
      <files>
        <clear />
        <add value="index.php" />
      </files>
    </defaultDocument>
  </system.webServer>
</configuration>
MIME-Typ hinzufügen

Als ich eine lokal ge­spei­cherte Web­seite aus­pro­bierte, fiel mir auf, dass darin einige Bilder nicht an­ge­zeigt wur­den. Diese Bilder sind im recht jungen .webp-Datei­format ge­spei­chert. In diesem Fall war im IIS offen­bar noch nicht standard­mäßig hinter­legt, ob er .webp-Dateien aus­lie­fern soll. Dies muss bei Bedarf manuell ein­ge­tragen werden.

Öffnen Sie den Internet­informations­dienste (IIS) Manager. Gehen Sie dazu auf das Windows-Start­menü und tippen "IIS" ein, dann kann man den IIS-Manager an­klicken. Im Manager-Fenster doppel­klicken Sie das Icon "MIME-Typ". In der Liste der Datei-Endungen kann man mit Rechts­klick "Hinzu­fügen" an­klicken. Dort trägt man die neue Datei-Endung und den pas­sen­den MIME-Typ ein, in diesem Beispiel "image/webp".
Hash, Random, Crypto mittels OpenSSL

Die Datenübertragung im lokalen Intra­net wird in der Regel selten mittels SSL (https) ver­schlüs­selt, weil man sich dafür um selbst­signierte Zerti­fi­kate küm­mern muss. Dennoch ist es wahr­schein­lich, dass Sie OpenSSL als Er­wei­te­rung für PHP be­nöti­gen, denn es gibt ein ein paar PHP-Funktio­nen, welche OpenSSL ver­wen­den, z.B. die Hash-Funktion openssl_digest(), Zufalls­zahlen mit­tels openssl_random_pseudo_bytes() oder sons­tige Ver­schlüs­selun­gen mit openssl_encrypt() und openssl_decrypt().

Praktischerweise bringt PHP die OpenSSL-Erwei­te­rung gleich mit, jedoch ist sie nicht stan­dard­mäßig akti­viert. Öffnen Sie die Datei "php.ini" im PHP-Ordner mit Rechts­klick "Bearbei­ten". Wenn man zum Schrei­ben in Ihrem PHP-Ordner Adminis­trator-Rechte be­nötigt (empfoh­len), müs­sen Sie zuerst den Editor "als Adminis­tra­tor star­ten" und darin die Datei laden.

In der Konfiguration finden Sie fol­gende zwei Zeilen (jede ein­zeln suchen) ...
;extension=openssl

;extension_dir = "ext"
Ein Semikolon kommen­tiert eine Zeile aus (deakti­viert). Entfer­nen Sie das Semi­ko­lon vor beiden Zeilen und spei­chern Sie die Datei. Eventu­ell müs­sen Sie die IIS neu star­ten (Kommando­zeile: iisreset), damit die Ände­rung wirk­sam wird - oder ein­fach den Com­puter neu starten.

Anleitung / Text: Jörg Rosenthal, Aidex GmbH Software, 2024