PHP onder Windows met IIS

Veel mensen maken gebruik van een Apache webserver onder Windows t.b.v. PHP-development. Daarbij worden vaak tools gebruikt als XAMPP en WAMP. Of er wordt gebruik gemaakt van Vagrant (eventueel i.c.m. Homestead) of Docker. Natuurlijk helemaal prima maar in veel gevallen kun je net zo goed (of beter) gebruik maken van de IIS-webserver die aanwezig is in Windows.

Voordelen

Stappenplan

  1. Installeren IIS en rewrite module
  2. Opzetten eerste vhost in IIS
  3. Downloaden PHP
  4. Configureren PHP
  5. IIS vhost voorzien van PHP ondersteuning

Aan de slag, installeren IIS en rewrite module

Internet Information Services

IIS is al aanwezig in Windows als onderdeel. Je hoeft deze enkel te activeren.

Als je je computer nog moet herstarten i.v.m. klaar staande Windows Updates is het verstandig dit eerst te doen anders kun je IIS soms niet activeren.

Ga hiervoor naar het klassieke Configuratiescherm.

Open Configuratie

Klik op Programma's.

Programma's

Klik op Windows onderdelen in- of uitschakelen.

Windows onderdelen in- of uitschakkelen

In de lijst met onderdelen vouw het kopje Internet Information Services open zet een vinkje aan bij Hulpprogramma's voor webbeheer > IIS-beheerconsole

Onderdelen

Onder World Wide Web-serivces > Beveiliging kun je in principe alles naar wens uit of aanzetten, ik activeer altijd minimaal Basisverificatie (nodig als je Basic auth via IIS wilt gebruiken, vergelijkbaar met htpasswd van Apache), IP-beveiliging, Ondersteuning voor centrale SSL-certifiaten (nodig voor als je HTTPS wilt inschakkelen), Verificatiesamenvatting en Windows-verificatie. Onder World Wide Web-serivces > Gezondheid en diagnose hoeft enkel HTTP-Logboekregistratie aan te staan. Onder World Wide Web-serivces > Prestatiefuncties raad ik aan voor development alles uit te zetten.

Onderdelen

Onder World Wide Web-serivces > Toepassingsontwikkelingsfuncties activeer je enkel CGI. Verder kun je alles uitlaten tenzij je zelf bepaalde technologien wilt gebruiken. World Wide Web-serivces > Veelvoorkomende HTTP-functies is het handig om Bladeren door mappen, HTTP-fouten, HTTP-omleiding, Standaard document en Statische inhoud in te schakelen.

Onderdelen

Klik op OK om de onderdelen te installeren.

Installeren

Controleer de installatie van IIS door het start menu te openen en iis te typen. Als Beheer van Internet Information Services (IIS) verschijnt is de installatie gelukt.

Opzetten vhost

Host file

Vhosts die we kennen van Apache heten onder IIS Sites. Maak als eerste een verwijzing aan binnen je hosts file. Open hiervoor Kladblok als Administartor.

Kladblok

Open het hosts bestand. Als Kladblok als Administrator is geopend sta je al in C:\Windows\System32 en hoef je enkel in te tikken drivers\etc\hosts.

Hostfile zoeken

Voeg onder in het bestand een regel toe met 127.0.0.1 en de hostname waarop de website bereikbaar moet zijn. In mijn geval dev.maartendekeizer.nl. Let op dat je minimaal 1 spatie opneemt tussen het IP adres en de hostname.

Hostfile bewerken

IIS

Open nu de IIS beheerconsole via het start menu en klik links je PC naam aan en vervolgens Sites. Klik rechts op Website toevoegen

IIS beheer console

In het venster wat verschijnt geef je eerst een naam op voor de vhost, dit mag van alles zijn. Voor het overzicht is het handigst als je hier direct de hostname gebruikt.

Nieuwe site

Klik vervolgens op de knop Selecteren om de toepassingsgroep te selecteren. Kies hier DefaultAppPool.

Selecteer DefaultAppPool
Sla deze stap niet over ook al is DefaultAppPool de standaard. Anders wordt er als nog een nieuwe app pool aangemaakt. Dit is voor development echter niet nodig.

Vul de overige velden in. Bij fysiek pad de map naar je websites publieke map (meestal public, web, wwwroot of htdocs genoemd). Dit is de map waar je index.html of index.php staat. Bij hostname vul je de hostname van de site in.

Nieuwe site
Als je al een andere webserver op poort 80 hebt draaien moet je deze eerst uitzetten. Er kunnen niet twee services tegelijkertijd poort 80 claimen.

Testen!

Open je webbrowser en ga naar de hostname. Als je nog geen index.html hebt krijg je een foutmelding. Als je deze wel hebt krijg je deze te zien.

Nieuwe site
Nieuwe site

PHP downloaden

Ga naar https://windows.php.net/download/ en kies van de gewenste PHP versie de VC15 x64 Non Thread Safe variant. Download de ZIP package. De oudere versies kun je vinden in het archief.

Download ZIP
Deze handleiding gaat verder uit van versie 7.3.8-nts-Win32-VC15-x64. Als je een andere versie download gebruik je natuurlijk deze versiegegevens in onderstaande stappen.

Pak het ZIP bestand uit.

Alles uitpakken

Selecteer een tijdelijk map om de bestanden in uit te pakken. Als je later meerdere versies van PHP op je systeem wilt draaien is het handig de voorgestelde map naam aan te houden.

Wizard uitpakken
Uitpakken...

Open de tijdelijk map en kopieer php.ini-development en hernoem de kopie naar php.ini

php.ini maken

Open het nieuwe bestand met Kladblok

php.ini openen met kladblok

Zoek in het bestand naar de setting date.timezone. Deze setting staat nu nog uit (er staat ; voor). Zet de setting aan (haal de ; weg). En vul deze in met je timezone. Voor Nederland kun je Europe/Amsterdam gebruiken. Op php.net is een lijst met andere timezones beschikbaar.

Timezone instellen

Zoek nu naar de setting extension_dir. Deze setting staat nu nog uit (er staat ; voor). Zet de setting aan (haal de ; weg). En vul deze in met de map waar straks PHP komt te staan en daarbinnen de ext map. In deze blog ga ik straks de map plaatsen onder C:\Program Files, het hele pad wordt dus C:\Program Files\php-7.3.8-nts-Win32-VC15-x64\ext.

Extension directory instellen

Zoek in het bestand naar het lijstje extensions. Activeer de extensions die je wilt gebruiken door de ; voor de regel weg te halen.

Extensions activeren

Sla nu het bestand op en sluit Kladblok. Kopieer de tijdelijke map.

Map kopieeren

Ga naar C:\Program Files en plak hier de map. Ga door als Administrator als dit wordt gevraagd.

Map kopieeren
Map kopieeren

Open nu de IIS beheerconsole en ga naar de gewenste Site. Klik hier op Handlertoewijzingen.

Handlertoewijzingen

Klik rechts op Moduletoewijzing toevoegen.

Moduletoewijzingen

Vul bij Pad van aanvraag in: *.php in. Dit zorgt ervoor dat PHP geactiveerd wordt bij alle PHP bestanden.
Kies bij Module voor FastCgiModule
Vul bij Uitvoerbaar bestand (optioneel): "c:\Program Files\php-7.3.8-nts-Win32-VC15-x64\php-cgi.exe". Let op de dubbele quotes aan het begin en eind, deze zijn verplicht!
Bij Naam mag je in principe zelf een naam geven, het handigste is de naam en PHP versie gebruiken, dus php-7.3.8-nts-Win32-VC15-x64.
Klik op OK

Configureer FastCGI applicatie

Je krijgt nu een vraag over het aanmaken van de toepassing. Klik Ja

Aanmaken?

Ga in de IIS Beheerconsole terug naar de Site en klik op Standaarddocument.

Standaarddocument

Klik rechts op Toevoegen en vul in index.php.

Nieuw standaarddocument

Download en installeer tenslote de laatste Visual C++ redistributal. Dit kan rechtstreek bij Microsoft https://aka.ms/vs/16/release/VC_redist.x64.exe en installeer deze.

Visual C++

Verwijder de index.html uit je website map en plaats een nieuw bestand index.php. Vul deze met:

<?php phpinfo();

Open tenslote de website opneiwu in de webbrowser.

phpinfo

Happy PHP-ing!

01-08-2019 NL php wamp-stack iis
Deel via: LinkedIn Twitter