Microsoft IIS 5.1 y IIS 6.0

Esta sección contiene instrucciones para configurar en forma manual Internet Information Services (IIS) 5.1 y IIS 6.0 para trabajar con PHP en Microsoft Windows XP y Windows Server 2003. Para obtener instrucciones sobre la configuración de IIS 7.0 y versiones posteriores de Windows Vista , Windows Server 2008, Windows 7 y Windows Server 2008 R2 referirse a Microsoft IIS 7.0 y posteriores.

Configurar IIS para procesar solicitudes de PHP

Descarga e instala PHP de acuerdo a las instrucciones descritas en manual detallado de instalación

Nota:

Non-thread-safe build de PHP se recomienda cuando se utiliza IIS. Non-thread-safe builds están disponibles en »  PHP para Windows: Binarios y Fuentes.

Configure el CGI- y configure FastCGI-specific en el archivo php.ini como se muestra a continuación:

Ejemplo #1 Configuración CGI y FastCGI en php.ini

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0

Descargue e instale » Microsoft FastCGI extensión para IIS 5.1 y 6.0. La extensión está disponible para 32-bit y plataformas de 64-bit - seleccionar el paquete de descarga adecuada para la plataforma.

Configure la extensión FastCGI para manejar las solicitudes específicas de PHP ejecutando el comando que se muestra a continuación. Vuelva a colocar el valor de el parámetro "-path" con la ruta absoluta del fichero en el fichero php-cgi.exe.

Ejemplo #2 Configuración de la extensión FastCGI para manejar las solicitudes de PHP

cscript %windir%\system32\inetsrv\fcgiconfig.js -add -section:"PHP" ^
-extension:php -path:"C:\PHP\php-cgi.exe"

Este comando creará un script de mapeo IIS para el fichero de extensión *.php , lo que resultará en todas las URLs que terminan con .php siendo manejado por la extensión FastCGI. Asimismo, se configurará la extensión FastCGI a usar en el ejecutable php-cgi.exe para procesar las solicitudes de PHP.

Nota:

En este punto la necesidad de instalación y configuración de los pasos se han completado. El resto de instrucciones a continuación son opcionales, pero altamente recomendable para lograr una funcionalidad óptima y el rendimiento de PHP en IIS.

Suplantación y acceso a ficheros del sistema

Se recomienda habilitar la suplantación FastCGI en PHP cuando este utilizando IIS. Esto es controlado por la directiva fastcgi.impersonate en el fichero php.ini. Cuando suplantación está activado, PHP realizará todas las operaciones de ficheros de sistema en favor de la cuenta de usuario que se ha determinado por la autentificación de IIS. Esta asegura que, incluso si el mismo proceso PHP se comparte entre diferentes sitios web IIS, los scripts PHP en estos sitios web no podrá acceder a los otros fichero ' siempre y cuando use cuentas de usuario diferentes utilizado para la autenticación IIS en cada sitio web.

Por ejemplo IIS 5.1 and IIS 6.0, en su configuración predeterminada, se ha habilitado la autenticación anónima con una función de cuenta de usuario IUSR_<MACHINE_NAME> utilizado como una identidad por defecto. Esto significa que para que IIS puede ejecutar scripts PHP, es necesario concedera la cuenta IIUSR_<MACHINE_NAME> permiso de lectura en estos scripts. Si las aplicaciones PHP necesitan realizar operaciones de escritura sobre determinados ficheros o escribir ficheros en algunas carpetas a continuación la cuenta IUSR_<MACHINE_NAME> debe tener permiso para escribir en ellos.

Para determinar qué cuenta de usuario es utilizado por IIS autenticación anónima, siga estos pasos:

  1. En el menú Inicio de Windows seleccione "Run:", type "inetmgr" y haga clic en "Ok";

  2. Expanda la lista de sitios web en el nodo "Web Sites" en la vista de árbol, haga clic derecho en el sitio web que se está utilizando y seleccionar "Properties";

  3. Haga clic en "Directory Security" tab;

  4. Tome nota de un "User name:" campo en el cuadro de dialogo "Authentication Methods"

Autenticación anonima para IIS 5.1 y IIS 6.0

Para modificar la configuración de permisos en ficheros y carpetas, utilice la interfaz de usuario de el Explorador de Windows o el comando icacls.

Ejemplo #3 Configuración del fichero de los permisos de acceso

icacls C:\inetpub\wwwroot\upload /grant IUSR:(OI)(CI)(M)

Establecerindex.php como un documento predeterminado en IIS

Los documentos por defecto de IIS se utilizan para las solicitudes HTTP que no especifican un nombre de documento. Con las aplicaciones PHP, index.php suele actuar como un documento predeterminado. Para añadir index.php a la lista de documentos predeterminados IIS, siga estos pasos:

  1. En el menú Inicio de Windows seleccione "Run:", teclee "inetmgr" y haga clic en "Ok";

  2. Haga clic derecho en el nodo ""Web Sites" de la vista de árbol y seleccione "Properties";

  3. Haga clic en "Documents" tab;

  4. Haga clic en el botón "Add..." y enter en "index.php" para el " Contenido de la página por defecto :".

Configuración index.php como documento predeterminado para IIS

FastCGI y Reciclaje de configuración de PHP

Configurar la extensión IIS FastCGI para el reciclaje de procesos PHP utilizando los comandos de abajo. Los controles de configuración de FastCGI instanceMaxRequests número de solicitudes que serán procesadas por un solo proceso php-cgi.exe antes de el cierre de la extensión FastCGI. La variable PHP de entorno PHP_FCGI_MAX_REQUESTS controla cuántas peticiones de un único proceso php-cgi.exe se encargará antes de que se recicle así mismo. Asegúrese de que el valor especificado por la configuración FastCGI InstanceMaxRequests es menor o igual al valor especificado para PHP_FCGI_MAX_REQUESTS.

Ejemplo #4 Configuración FastCGI y reciclaje PHP

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-InstanceMaxRequests:10000

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000

Configuración de los ajustes de tiempo de espera FastCGI

Aumentar la configuración de tiempo de espera para la extensión FastCGI si hay aplicaciones que llevan mucho tiempo ejecutar scripts PHP. Los dos valores a ajsutar de los controles de tiempos de espera son ActivityTimeout y RequestTimeout. Véase » Configuración de Extensión FastCGI para IIS 6.0 para más información sobre los ajustes.

Ejemplo #5 Configuración de los ajustes de tiempo de espera FastCGI

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-ActivityTimeout:90

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-RequestTimeout:90

Cambiar la ubicación del fichero php.ini

PHP busca para el fichero php.ini en varios lugares y es posible cambiar las ubicaciones predeterminadas de el fichero php.ini utilizando la variable de entorno PHPRC. Las instrucciones PHP para cargar el fichero de configuración desde una ubicación personalizada, ejecute el comando que se muestra a continuación. La ruta de acceso absoluta al directorio con el fichero php.ini debe ser especifica con un valor de variable de entorno PHPRC.

Ejemplo #6 Cambiar la ubicación del fichero php.ini

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-EnvironmentVars:PHPRC:"C:\Some\Directory\"

add a note add a note

User Contributed Notes 13 notes

up
5
renigade1 at can-d dot net
12 years ago
If you still receive 404 errors... try this...

I had to:

1)    right click on My Computer, select Manage
2)    open up "Services and Applications" -> "Internet Information Services" -> "Web Sites" -> mywebsite (where mywebsite could be "Default Web Site" or whatever my web site is named)
3)    right-click on mywebsite and select Properties
    choose the "Home Directory" tab, select Configuration... button
4)    either select the .php extension and choose the Edit... button, or if .php isn't listed then press the Add... button
5)    make the Executable C:\WINDOWS\system32\inetsrv\fcgiext.dll, the extension .php, and ensure Verbs are limited to GET,HEAD,POST, check the "Script engine" and "Verify that file exists" check boxes

Once I did this I at least now get the 500 fastcgi error
up
1
pythonex12 at gmail dot com
10 years ago
I used Windows 2003 Server, IIS 6.0, MS SQL Server 2008, and PHP 5.3 along with FastCGI. If, after following the set up step-by-steps, you continually get a FastCGI 500 timeout error check your MS SQL Server PHP driver.

MS SQL Server PHP driver 3.0 which was updated on 04/18 requires you have the 2012 MS SQL Server Native Client (v 11). But if you are using MS SQL Server 2008 like I was you only have the 2008 MS SQL Server Native Client (v 10). For whatever reason I could not get the 2012 Native CLient to install on the OS even though it appeared MS's website said it should be able to.

So just downgrade to the MS SQL Server PHP driver 2.0. The site says it will be deprecated but at least you can get up and running for a while until you have to upgrade your OS and MS SQL Server.

This kinda drove me nuts for a few hours.
up
1
Simon Elms
12 years ago
Installing PHP 5.4 on Windows Server 2003 R2 Standard Edition with IIS 6:

Issue: After installing PHP I was getting 404 errors on all .php pages, even if I browsed from within IIS Manager. 

Solution: Add a PHP Web Service Extension:

In IIS Manager, expande the local computer node on the left and right-click on Web Service Extensions.  From the context menu select "Add a new Web service extension..."

In the New Web Service Extension dialog:
   
    Extension name: PHP

    Required files: Add... path to php.exe (eg C:\PHP\php.exe)

Set status of new web service extension to Allowed.
 
NOTE: Seems to work equally well if you use the path to php.exe or php-cgi.exe.
up
0
Refrito
12 years ago
Using Win 2003 Server, IIS 6, PHP 5. If after running the command:

cscript fcgiconfig.js -add -section:"PHP" -extension:"php" -path:"C:\PHP\php-cgi.exe"
(with the right quotation as pointed in a previous note)

You get the following error/message:
C:\WINDOWS\system32\inetsrv\fcgiconfig.js(1326, 5) (null): 0xFFFFFFDF

It may be because you have a previous version of C:\WINDOWS\system32\inetsrv\fcgiext.ini. So backup the file and make a clean one with only an empty [types] section. Run the command again and it should work.
up
0
stpetersn at Hotmail dot com
12 years ago
I used Windows 2003 Server, IIS 6.0, MS SQL Server 2008, and PHP 5.3 along with FastCGI. If, after following the set up step-by-steps, you continually get a FastCGI 500 timeout error check your MS SQL Server PHP driver.

MS SQL Server PHP driver 3.0 which was updated on 04/18 requires you have the 2012 MS SQL Server Native Client (v 11). But if you are using MS SQL Server 2008 like I was you only have the 2008 MS SQL Server Native Client (v 10). For whatever reason I could not get the 2012 Native CLient to install on the OS even though it appeared MS's website said it should be able to.

So just downgrade to the MS SQL Server PHP driver 2.0. The site says it will be deprecated but at least you can get up and running for a while until you have to upgrade your OS and MS SQL Server.

This kinda drove me nuts for a few hours.
up
0
Anonymous
12 years ago
I am using Win 2003 Server SP2, IIS 6, Installing PHP 5.3.10 as FastCGI

If you continue to receive FastCGI could not proccess your request - Access Denied Error -5 check to make sure the IIS_WPG Group has Read, Read/Execute permission to the PHP installation directory and is inherited to the php-cgi.exe file.

Also, in researching this problem during my installation, I also found that you should have an entry in the IIS Web Extensions for the php-cgi.exe.
up
0
koen dot bauwens at fracarita dot org
13 years ago
When executing:

cscript %windir%\system32\inetsrv\fcgico
nfig.js -add -section:"PHP" ^
More? -extension:php -path:"C:\PHP\php-cgi.exe"

You get this response:

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

C:\WINDOWS\system32\inetsrv\fcgiconfig.js(1348, 5) (null): 0xFFFFFFDF

Then check if in the C:\WINDOWS\system32\inetsrv\fcgiext.ini file the next text is present:

[Types]
php=c:\php\php-cgi.exe

[c:\php\php-cgi.exe]
QueueLength=999
MaxInstances=20
InstanceMaxRequests=10000
IdleTimeout=90
RequestTimeout=90

If not, add it, worked for me!
up
0
gsaarenvirta at makeplain dot com
13 years ago
A note for your reference ... I was getting error 404 "file not found when trying to browse .php" files in \inetpub\wwwroot although .html files worked fine... messed around for hours until I tried this on advice of a friend.

FYI ...

Operating system Windows Server 2003 SP2 x64
IIS v6.0
PHP v 5.3.5 nts windows x86
Microsoft C++ 2008 redistributable
no fastcgi

Followed all the manual PHP configuration instructions very carefully, set php.ini directives, gave appropriate permissions to "IUSR_(machine)", set up web extensions etc. etc.

The final fix that made everything work... renamed 'php.ini' to 'php-cgi-fcgi.ini'

Hope this saves someone hours...
up
0
Anonymous
14 years ago
i`ve the same trouble after the install php 5.2.14-nts on IIS6 (Win2003Server)- try to open-dialog when php-file is opening...

I`ve to manual add .php in "Application configuration"  ... \system32\inetsrv\fcgiext.dll  (even this option selected in installation - "Script executable")

this solved the problem :)
up
-1
jeanchristophe dot vanhalle at gmail dot com
9 years ago
If your PHP script displays `No input file specified' and you followed the instructions (for IIS 5.1 and windows XP) you might have to set up ACL on Windows\TEMP so that the IUSR accessing the page has right and write access on that folder.
up
-1
Anonymous
12 years ago
When installing PHP 5.3 on IIS by following the manual installation steps described here (http://www.php.net/manual/en/install.windows.iis6.php) and here (http://www.php.net/manual/en/install.windows.iis7.php) it is possible to get the following error from FastCGI:

HTTP Error 500.0 - Internal Server Error

Module: FastCgiModule

Notification: ExecuteRequestHandler

Handler: php-5.3.6

Error code: 0x800736b1

The reason this error happens is because PHP 5.3 is built by using Visual C++ 2008 compiler (VC9) and hence requires Visual C++ 2008 runtime to be installed on the machine. This error does not happen when PHP 5.3 is installed by Web Platform Installer or if you already have URL Rewrite module installed.

To fix the error download and install Visual C++ 2008 runtime from here:

http://www.microsoft.com/downloads/en/details.aspx?familyid=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en

(Make sure to use x86 version even if you have x64 environment)
up
-1
crab dot crab at gmail dot com
14 years ago
I am using Win 2003 Server, IIS 6, PHP 5.

If you see "You are not authorized to view this page" error when running your PHP page.

Try one more thing:
1. Right-click {C:\php} (or your PHP installation root) and select {Properties}
2. Select {Security} tab and click {Add} button
3. Enter {ComputerName/IUSR_ComputerName} as object name and press {OK}
4. Select {Read & Execute} as permissions
5. Click {Advanced} button and select {Allow inheritable permissions from the parent...} checkbox
6. Press {OK}
up
-1
bjorn dot tornroth at nettitonttu dot fi
12 years ago
If you receive:

Input Error: There is no script engine for file extension ".js".

When executing:

cscript %windir%\system32\inetsrv\fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP\php-cgi.exe"

Include the switch:

/e:jscript

Like this:

cscript /e:jscript %windir%\system32\inetsrv\fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP\php-cgi.exe"

Worked on freshly installed XP Pro ENG SP3(updated).
To Top