Habilitar PHP en IIS 7 de Windows 7

Windows 7 utiliza servidor web IIS 7 cuya configuración es bastante diferente a la de versiones anteriores por lo que en ocasiones resulta difícil activar PHP para ser utilizado por el servidor web. David Wang, experto de Microsoft, ha preparado un script para ejecutar como archivo por lotes desde el Símbolo de Sistema con privilegios de Administrador que realiza por nosotros el trabajo necesario para habilitar PHP en IIS 7.

Los pasos detallados son:

  1. Instalar IIS 7 desde Panel de Control >> Programas >> Cambiar opciones de Windows (no parece necesario modificar las opciones por defecto de la instalación)
  2. Instalar PHP 5 en C>Inetpub>PHP (siendo C: el disco o partición en que está instalado Windows), de esta manera se aprovechan los privilegios de listas ACL del directorio Inetpub y se evitan errores posteriores con los permisos
  3. Crear con el bloc de notas un archivo por lotes con extensión *.BAT que contenga el texto propuesto por David Wang (hay que ejecutar el archivo por lotes con privilegios de Administrador).
REM Las 2 primeras líneass corresponden a la instalaciónn de PHP en el directorio recomendado REM Por eso vienen comentadas con REM (no se ejecutan) REM MKDIR %SYSTEMDRIVE%\Inetpub\PHP REM ECHO Extract PHP files from ZIP archive into %SYSTEMDRIVE%\Inetpub\PHP COPY /Y %SYSTEMDRIVE%\Inetpub\PHP\PHP.INI-Recommended %SYSTEMDRIVE%\Inetpub\PHP\PHP.INI PUSHD %SYSTEMROOT%\System32\inetsrv APPCMD SET CONFIG -section:handlers -+[name='PHP',path='*.php',verb='GET,HEAD,POST',modules='IsapiModule',scriptProcessor='%SYSTEMDRIVE%\Inetpub\PHP\php5isapi.dll',resourceType='File'] APPCMD SET CONFIG -section:isapiCgiRestriction -+[path='%SYSTEMDRIVE%\Inetpub\PHP\php5isapi.dll',allowed='true',groupId='PHP',description='PHP5'] POPD
Lenguaje del código: JavaScript (javascript)


David Wang tiene otra versión más compleja del script, puedes probar con este si el anterior no da resultado:

@IF ?%_ECHO%?==?? ECHO OFF SETLOCAL SET DIR_PHP_FROM=%SYSTEMDRIVE%\Inetpub\PHP SET PHP_TYPE=ISAPI SET PHP_MODULE=IsapiModule SET PHP_BINARY=php5isapi.dll :Menu ECHO. ECHO David.Wang Sample PHP/IIS7 Configurator ECHO Version: June 2006 ECHO. ECHO ------------------------------ Summary ------------------------------ ECHO PHP Binaries Dir : %DIR_PHP_FROM% ECHO PHP Binary Type : %PHP_TYPE% ECHO PHP Binary Name : %PHP_BINARY% ECHO --------------------------------------------------------------------- REM REM Do some basic validations REM ECHO. ECHO Validating inputs... IF /I ?%PHP_TYPE%? NEQ ?CGI? IF /I ?%PHP_TYPE%? NEQ ?ISAPI? ECHO.&ECHO ERROR: Binary Type MUST be either CGI or ISAPI FOR %%I IN ( %PHP_BINARY% ) DO ( IF /I ?%PHP_TYPE%? EQU ?CGI? IF /I ?%%~xI? NEQ ?.exe? ECHO.&ECHO WARNING: Binary Type %PHP_TYPE% requires a CGI EXE binary IF /I ?%PHP_TYPE%? EQU ?ISAPI? IF /I ?%%~xI? NEQ ?.dll? ECHO.&ECHO WARNING: Binary Type %PHP_TYPE% requires an ISAPI DLL binary ) IF NOT EXIST "%DIR_PHP_FROM%\%PHP_BINARY%" ( ECHO. ECHO ERROR: PHP Binary "%DIR_PHP_FROM%\%PHP_BINARY%" does not exist! ECHO Please first completely extract PHP to "%DIR_PHP_FROM%" ) IF /I ?%PHP_TYPE%? EQU ?CGI? SET PHP_MODULE=CgiModule IF /I ?%PHP_TYPE%? EQU ?CGI? ECHO.&ECHO ERROR: PHP CGI requires modifying cgi.force_redirect to 0 in "%DIR_PHP_FROM%\PHP.INI" IF /I ?%PHP_BINARY%? NEQ ?php5isapi.dll? IF /I ?%PHP_BINARY%? NEQ ?php-cgi.exe? ECHO.&ECHO WARNING: Unrecognized PHP binary %PHP_BINARY% ECHO. ECHO Remember to tweak PHP.INI for security and functionality per php.net ECHO Finished input validation. ECHO. SET GO= SET /P GO=Press 1 to EDIT choices, or ENTER to start IIS modifications: IF ?%GO%? EQU ?? GOTO :Start ECHO. ECHO Press ENTER to accept [%DIR_PHP_FROM%], or provide new value (folder path) SET /P DIR_PHP_FROM=PHP Binaries Dir: ECHO Press ENTER to accept [%PHP_TYPE%], or provide new value (CGI or ISAPI) SET /P PHP_TYPE=PHP Binary Type: ECHO Press ENTER to accept [%PHP_BINARY%], or provide new value (filename) SET /P PHP_BINARY=PHP Binary Name: GOTO :Menu :Start REM REM Start Configuration REM IF NOT EXIST "%DIR_PHP_FROM%\%PHP_BINARY%" ( ECHO. ECHO ERROR: PHP Binary "%DIR_PHP_FROM%\%PHP_BINARY%" does not exist! ECHO Please first completely extract PHP to "%DIR_PHP_FROM%" GOTO :EOF ) ECHO. ECHO Starting IIS7 Configuration... ECHO.ECHO Copying "%DIR_PHP_FROM%\PHP.INI-Recommended" to PHP.INI... COPY /Y "%DIR_PHP_FROM%\PHP.INI-Recommended" "%DIR_PHP_FROM%\PHP.INI" >NUL PUSHD %SYSTEMROOT%\System32\inetsrv ECHO Setting PHP Handler... APPCMD SET CONFIG -section:handlers "-+[name='PHP-%PHP_TYPE%',path='*.php',verb='GET,HEAD,POST',modules='%PHP_MODULE%',scriptProcessor='%DIR_PHP_FROM%\%PHP_BINARY%',resourceType='File']" ECHO Adding and Enabling PHP in ISAPI/CGI Restriction List... APPCMD SET CONFIG -section:isapiCgiRestriction "-+[path='%DIR_PHP_FROM%\%PHP_BINARY%',allowed='true',groupId='PHP',description='PHP']" POPD ECHO. ECHO Finished IIS7 Configuration. ECHO. ECHO Test installation using PHP file content of: ^<?php phpinfo();?^> ENDLOCAL
Lenguaje del código: PHP (php)