Como instalar PHP sobre IIS 10 en Windows Server 2019 Datacenter

Vamos a aprender a instalar PHP sobre IIS en Windows 2019 Server de manera manual. Claro que hay otras formas de hacerlo, como mediante Web Platform Installer (Web PI) . Pero yo considero que manualmente es la mejor forma de hacerlo si eres desarollador; pues así sabrás exactamente donde están tus archivos de configuración e instalación.

Paso 1: Instalar IIS Express 10

Desde el Server Manager, seleccionamos Manage y luego Add Roles and Features.

En el siguiente cuadro de dialogo, seleccionamos Role-based or feature based installation. En la siguiente ventana seleccionamos Select a server from the server pool asegurandonos que este seleccionado el servidor local.

En la siguiente ventana, seleccionamos la opción Web Server (IIS) y la casilla CGI. Esto es importante porque PHP se ejecuta sobre FastCGI del IIS.

Una vez terminada la instalación, podemoa abrir el navegador web local y dirigirnos a la dirección URL http://localhost y se deberá ver la página incial del IIS.

Paso 2: Descargar PHP

PHP se encuentra disponible para descargar gratuitamente desde su sitio oficial para Windows. Aseguráte de descargar la versión deseada. En este caso será la versión PHP 7.4 (7.4.25).

Es importante que eligas la versión VC15 x64 Non Thread Safe que es la que funciona con FastCGI de IIS Express. Finalmente elegimos el archivo Zip y lo descargamos en nuestro equipo.

Descargar Visual C++ Redistributable

La versión VC15 de PHP requiere tener instalado el Visual C++ Redistributable for Visual Studio 2015-2019 x64. Si no lo tienes ya instalado en tu equipo, descárgalo desde la misma página de descargas de PHP para Windows.

Instálalo y si lo solicita, reinicia tu equipo antes de seguir con el siguiente paso.

Paso 4: Configurar PHP en Windows

Extrae el archivo Zip descargado en el paso anterior y renombra la carpeta a v7.4 (por la versión descargada de PHP).

Colócate en la carpeta archivos de programa en la ruta C:\Program Files\ y crea la carpeta PHP. Nota: A IIS le gusta colocar a PHP dentro de esta ruta, pero puedes colocarlo en cualquier otra parte.

Finalmente copia la carpeta v7.4 dentro de la carpeta PHP.

Archivo de configuración de PHP

Dentro de la carpeta de configuración de PHP C:\Program Files\IIS Express\PHP\v7.4., copia y pega el archivo php.ini-production.

Renómbralo como php.ini. Este es el nombre que a PHP le gusta para su archivo de configuración.

Abre el archivo php.ini en el bloc de notas o Visual Studio Code. Al final del archivo, agrega la ruta de la carpeta de extensiones.

; Esto le dice a PHP donde estan las extensiones
extension_dir = "ext"

En caso de necesitar alguna extensión, se puede agregar debajo de esta línea.

Agregar PHP al PATH de Windows

Botón derecho en el menú inicio de Windows, luego hacer clic en System y debajo de Related Settings hacer clic en System info. Dentro del Panel de Control, clic en el menú de la derecha en Advanced system settings.

En la ventana System Properties, selecciona la pestaña Advanced y luego clic en Environment Variables.

En Environment Variables, selecciona Path y luego haga clic en Editar. Clic en New y agrega la ruta a la carpeta de instalación de PHP C:\Program Files\PHP\v7.4.

Clic en OK.

Paso 5: Configurar PHP en IIS Express

Para que IIS reconozca los scripts de PHP, debemos agregar un manejador para extensiones *.php con el módulo FastCgi de IIS.

Esto se hace editando el archivo de configuración de IIS Express en la ruta: C:\Windows\System32\inetsrv\Config.

Preferentemente este archivo no se edita manualmente. IIS proporciona una herramienta de línea de comandos: C:\Windows\System32\inetsrv\appcm.exe.

Abre una ventana de comandos y ejecuta el archivo instala-php.bat que se proporciona a continuación:

@echo off

REM Configuración de PHP en IIS

REM Descargar la compilación de PHP desde Web Platform Installer o el archivo zip desde http://windows.php.net/downloads/

REM Ruta SIN COMILLAS al directorio donde se ha descomprimido o instalado la carpeta de PHP
set phppath=C:\Program Files\PHP\v7.4

REM Ruta CON COMILLAS de PHP para concatenar variables string
set phppath2="%phppath%"

REM Limpiar los manejadores actuales de PHP
"C:\Windows\System32\inetsrv\appcmd" clear config /section:system.webServer/fastCGI
REM El siguiente comando generará un mensaje de error si PHP no está instalado. Esto puede ser ignorado.
"C:\Windows\System32\inetsrv\appcmd" set config /section:system.webServer/handlers /-[name='PHP_via_FastCGI']

REM Instalar el manejador de PHP
"C:\Windows\System32\inetsrv\appcmd" set config /section:system.webServer/fastCGI /+[fullPath='%phppath2%\php-cgi.exe']
"C:\Windows\System32\inetsrv\appcmd" set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='%phppath2%\php-cgi.exe',resourceType='Unspecified']
"C:\Windows\System32\inetsrv\appcmd" set config /section:system.webServer/handlers /accessPolicy:Read,Script

REM Configurar las variables de FastCGI
"C:\Windows\System32\inetsrv\appcmd" set config -section:system.webServer/fastCgi /[fullPath='%phppath2%\php-cgi.exe'].monitorChangesTo:php.ini
"C:\Windows\System32\inetsrv\appcmd" set config -section:system.webServer/fastCgi /[fullPath='%phppath2%\php-cgi.exe'].activityTimeout:600
"C:\Windows\System32\inetsrv\appcmd" set config -section:system.webServer/fastCgi /[fullPath='%phppath2%\php-cgi.exe'].requestTimeout:600
"C:\Windows\System32\inetsrv\appcmd" set config -section:system.webServer/fastCgi /[fullPath='%phppath2%\php-cgi.exe'].instanceMaxRequests:10000
"C:\Windows\System32\inetsrv\appcmd".exe set config -section:system.webServer/fastCgi /+"[fullPath='%phppath%\php-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']"
"C:\Windows\System32\inetsrv\appcmd".exe set config -section:system.webServer/fastCgi /+"[fullPath='%phppath%\php-cgi.exe'].environmentVariables.[name='PHPRC',value='%phppath%\php.ini']"

REM Agrega index.php como documento default
"C:\Windows\System32\inetsrv\appcmd" set config /section:defaultDocument /-files.[value='index.php']
"C:\Windows\System32\inetsrv\appcmd" set config /section:defaultDocument /+files.[value='index.php']

Asegúrate de que la primer variable que apunte a tu instalación de PHP:

REM Ruta SIN COMILLAS al directorio donde se ha descomprimido o instalado la carpeta de PHP
set phppath=C:\Program Files\PHP\v7.4

Si no se ha instalado PHP previamente, la primera línea va a mandar un error de elemento no encontrado. Este error es esperado y normal.

Paso 6: Prueba tu instalación de PHP

Colocate en la ruta C:\inetpub\wwwroot.

Y luego, sin seleccionar arcchivos, clic derecho en algun espacio en blanco en Abrir con Visual Code.

Escribe el nombre del archivo phpinfo.php.

Abre el archivo en el bloc de notas y escribe el código para mostrar información de PHP dentro de index.php:

<?php phpinfo(); ?>

Inicia el sitio Web

Ya tenemos todo listo. Abre tu navegador web local y dirigete a la dirección URL http://localhost/phpinfo.php

Eso es todo! Ya podemos comenzar a publicar nuestros sitios web con PHP sobre IIS. Más adelante podríamos agregar la funcionalidad certificado SSL, pero eso lo veremos en otra entrada más adelante.

Comentarios