FastCGI <fastCgi>

Panoramica

L'elemento <fastCgi> contiene una raccolta di <application> elementi, ognuno dei quali crea una definizione di pool di applicazioni FastCGI. Internet Information Services (IIS) 7 include il componente FastCGI. Questo componente offre maggiore affidabilità e prestazioni migliori e consente di eseguire il framework applicazione PHP e altri framework applicazione Web in IIS 7.

La definizione più semplice del pool di applicazioni FastCGI richiede l'inclusione dell'attributo fullPath in un <application> elemento per definire i file binari da usare per il framework applicazione specifico. Per il framework PHP, impostare l'attributo fullPath sulla directory e sul nome file dei file binari PHP.

Altri attributi sono facoltativi e consentono di configurare diversi altri parametri. Questi includono il numero massimo di richieste che un processo di lavoro FastCGI può elaborare prima di essere riciclato, il numero massimo di processi di lavoro per un pool di applicazioni e la quantità massima di tempo che può richiedere una richiesta FastCGI.

Nota

Per elaborare le richieste tramite FastCGI, è necessario innanzitutto eseguire il mapping del percorso e delle estensioni di file specifiche al modulo FastCGI e specificare il processo FastCGI di destinazione come processore di script.

Novità di IIS 7.5

IIS 7.5 ha aggiunto gli attributi seguenti all'elemento <fastCgi>/<application> :

  • L'attributo monitorChangesTo consente di specificare un file da monitorare per le modifiche che potrebbero influire sul comportamento di un'applicazione FastCGI. Ad esempio, se si usa il framework PHP, è possibile configurare IIS per monitorare PHP. File INI per le modifiche specificando il percorso completo del file nell'attributo monitorChangesTo .
  • L'attributo stderrMode specifica il modo in cui IIS 7 gestirà gli errori restituiti da un'applicazione FastCGI tramite il flusso STDERR.
  • L'attributo signalBeforeTerminateSeconds consente di configurare IIS per attendere un periodo di tempo specificato dopo che IIS segnala a un'applicazione FastCGI che deve essere arrestata. In questo modo un'applicazione FastCGI pulisce tutte le impostazioni prima che IIS termini il processo.

Compatibilità

Versione Note
IIS 10.0 L'elemento <fastCgi> non è stato modificato in IIS 10.0.
IIS 8.5 L'elemento <fastCgi> non è stato modificato in IIS 8.5.
IIS 8.0 L'elemento <fastCgi> non è stato modificato in IIS 8.0.
IIS 7.5 L'elemento <application> della <fastCgi> raccolta è stato aggiornato in IIS 7.5 con gli attributi monitorChangesTo, stderrMode e signalBeforeTerminateSeconds .
IIS 7.0 L'elemento <fastCgi> è stato introdotto in IIS 7.0.
IIS 6.0 N/D

Attrezzaggio

Per usare l'ambiente FastCGI, è prima necessario installare il servizio ruolo CGI. Il processo di installazione registra il servizio ruolo CGI (Common Gateway Interface) in entrambi gli <globalModules> elementi e <modules> . Non è necessario eseguire altri passaggi per installare l'ambiente FastCGI.

Windows Server 2012 o Windows Server 2012 R2

  1. Sulla barra delle applicazioni fare clic su Server Manager.
  2. In Server Manager fare clic sul menu Gestisci e quindi su Aggiungi ruoli e funzionalità.
  3. Nella procedura guidata Aggiungi ruoli e funzionalità fare clic su Avanti. Selezionare il tipo di installazione e fare clic su Avanti. Selezionare il server di destinazione e fare clic su Avanti.
  4. Nella pagina Ruoli server espandere Server Web (IIS), server Web, server Web, sviluppo di applicazioni e quindi selezionare CGI. Fare clic su Avanti.
    Screenshot dell'opzione C G I selezionata in un'interfaccia di Windows Server 2012.
  5. Nella pagina Selezione funzionalità fare clic su Avanti.
  6. Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
  7. Nella pagina Risultati fare clic su Chiudi.

Windows 8 o Windows 8.1

  1. Nella schermata Start spostare il puntatore fino all'angolo inferiore sinistro, fare clic con il pulsante destro del mouse sul pulsante Start e quindi scegliere Pannello di controllo.
  2. In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva funzionalità di Windows.
  3. Espandere Internet Information Services, espandere Servizi Web a livello mondiale, espandere Funzionalità di sviluppo di applicazioni e quindi selezionare CGI.
    Screenshot dell'opzione C G I selezionata in un'interfaccia di Windows 8.
  4. Fare clic su OK.
  5. Fare clic su Close.

Windows Server 2008 o Windows Server 2008 R2

  1. Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti Amministrazione istrative e quindi fare clic su Server Manager.
  2. Nel riquadro gerarchia di Server Manager espandere Ruoli, quindi fare clic su Server Web (IIS).
  3. Nel riquadro Server Web (IIS) scorrere fino alla sezione Servizi ruolo e quindi fare clic su Aggiungi servizi ruolo.
  4. Nella pagina Selezione servizi ruolo della Procedura guidata Aggiungi servizi ruolo selezionare CGI e quindi fare clic su Avanti.
    Screenshot di C G I selezionato in un'interfaccia di Windows Server 2008.
  5. Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
  6. Nella pagina Risultati fare clic su Chiudi.

Windows Vista o Windows 7

  1. Sulla barra delle applicazioni fare clic su Start e quindi su Pannello di controllo.
  2. In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva funzionalità di Windows.
  3. Espandere Internet Information Services, quindi selezionare CGI, quindi fare clic su OK.
    Screenshot di C G I selezionato in un'interfaccia di Windows Vista o Windows 7.

Procedure

Nota per gli utenti di IIS 7.0: alcuni dei passaggi descritti in questa sezione potrebbero richiedere l'installazione di Microsoft Amministrazione istration Pack per IIS 7.0, che include un'interfaccia utente per le impostazioni fastCGI. Per installare Microsoft Amministrazione istration Pack per IIS 7.0, vedere l'URL seguente:

Come creare un mapping globale del gestore FastCGI per PHP

Nota

Prima di eseguire la procedura seguente, è necessario avere già installato file binari che eseguiranno il percorso del file o l'estensione del nome file specificata. In questo esempio viene usata un'implementazione PHP disponibile da https://www.php.net/.

  1. Aprire Gestione Internet Information Services (IIS):

    • Se si usa Windows Server 2012 o Windows Server 2012 R2:

      • Sulla barra delle applicazioni fare clic su Server Manager, su Strumentie quindi su Gestione Internet Information Services (IIS).
    • Se usi Windows 8 o Windows 8.1:

      • Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
      • Fare clic su strumenti Amministrazione istrative, quindi fare doppio clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Server 2008 o Windows Server 2008 R2:

      • Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti Amministrazione istrative e quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Vista o Windows 7:

      • Sulla barra delle applicazioni fare clic su Start e quindi su Pannello di controllo.
      • Fare doppio clic su strumenti Amministrazione istrative e quindi fare doppio clic su Gestione Internet Information Services (IIS).
  2. Nel riquadro Connessione ions fare clic sul nome del server per cui si desidera configurare i mapping dei gestori FastCGI.

  3. Nel riquadro Home fare doppio clic su Mapping del gestore.
    Screenshot dei mapping dei gestori selezionati nel riquadro Home sito Web predefinito.

  4. Nel riquadro Azioni fare clic su Aggiungi mapping moduli. Screenshot dei mapping dei gestori disabilitati e abilitati in I S Manager.

  5. Immettere le informazioni seguenti:

    • Immettere l'estensione del nome file nella casella di testo Percorso richiesta . Ad esempio, "*.php".

    • Fare clic su FastCgiModule nell'elenco a discesa Modulo .

    • Immettere il percorso del motore di scripting nella casella Eseguibile . Ad esempio, "C:\PHP\php-cgi.exe".

    • Immettere un nome univoco per il mapping del gestore nella casella Nome . Ad esempio, "PHP-FastCGI".

      Screenshot della finestra di dialogo Aggiungi mapping moduli con le opzioni specificate.

    • Fare clic su Restrizioni richieste

    • Selezionare Richiama gestore solo se viene eseguito il mapping della richiesta.

    • Fare clic per selezionare l'opzione File o Cartella .

    • Fare clic su OK.

      Screenshot dell'impostazione delle opzioni di mapping nella finestra di dialogo Restrizioni richieste.

  6. Fare clic su OK.

  7. Se viene richiesto di creare un'applicazione FastCGI nella finestra di dialogo Aggiungi mapping moduli, fare clic su .

    Screenshot prima di confermare la creazione di una nuova applicazione per il file eseguibile specificato.

    Nota

    Verrà creata automaticamente un'applicazione FastCGI per il mapping del gestore appena creato. Se si sceglie No, è possibile creare manualmente un'applicazione FastCGI in un secondo momento.

Come creare un'applicazione FastCGI per PHP

Nota

Prima di eseguire la procedura seguente, è necessario avere già installato file binari che eseguiranno il percorso del file o l'estensione del nome file specificata. Questo esempio usa un'implementazione PHP disponibile da www.php.net.

Nota

L'aggiunta di un'applicazione FastCGI non aggiunge automaticamente un mapping del gestore. A tale scopo, è necessario seguire la procedura descritta nella sezione How to create a FastCGI handler mapping for PHP( Come creare un mapping del gestore FastCGI per PHP] di questo articolo.

  1. Aprire Gestione Internet Information Services (IIS):

    • Se si usa Windows Server 2012 o Windows Server 2012 R2:

      • Sulla barra delle applicazioni fare clic su Server Manager, su Strumentie quindi su Gestione Internet Information Services (IIS).
    • Se usi Windows 8 o Windows 8.1:

      • Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
      • Fare clic su strumenti Amministrazione istrative, quindi fare doppio clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Server 2008 o Windows Server 2008 R2:

      • Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti Amministrazione istrative e quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Vista o Windows 7:

      • Sulla barra delle applicazioni fare clic su Start e quindi su Pannello di controllo.
      • Fare doppio clic su strumenti Amministrazione istrative e quindi fare doppio clic su Gestione Internet Information Services (IIS).
  2. Nel riquadro Connessione ions fare clic sul nome del server per cui si desidera configurare le impostazioni fastCGI.

  3. Nel riquadro Home fare doppio clic su FastCGI Impostazioni.
    Screenshot di Fast C G I Impostazioni selezionato nel riquadro Home di edizione Standard RVER.

  4. Nel riquadro Azioni fare clic su Aggiungi applicazione
    Screenshot di un riquadro di Impostazioni Fast C G I vuoto.

  5. Nella finestra di dialogo Aggiungi applicazione FastCGI immettere le informazioni seguenti:

    • Immettere il percorso del motore di scripting nella casella Percorso completo. Ad esempio, "C:\PHP\php-cgi.exe".

    • Immettere il numero massimo di richieste per l'applicazione FastCGI.

      Nota

      Per PHP, questo numero deve essere minore o uguale al numero massimo di richieste per l'ambiente PHP, configurato usando la PHP_FCGI_MAX_REQUESTS variabile di ambiente.
      Screenshot della finestra di dialogo Aggiungi applicazione Fast C G I con le proprietà predefinite fast C G I.

  6. Fare clic sui puntini di sospensione (...) accanto a EnvironmentVariables per aprire l'editor della raccolta delle variabili di ambiente.

  7. Nella finestra di dialogo Editor raccoltaVariables fare clic su Aggiungi.
    Screenshot di una finestra di dialogo editor raccolta variabili di ambiente vuota.

  8. Immettere le informazioni seguenti e quindi fare clic su OK.

    • Immettere "PHP_FCGI_MAX_REQUESTS" come Nome.

    • Immettere "10000" come Valore.

      Screenshot della nuova variabile nell'elenco Membri con le proprietà specificate.

  9. Fare clic su OK per chiudere la finestra di dialogo Aggiungi applicazione FastCGI.

Come aggiungere una variabile di ambiente FastCGI per PHP

Nota

Prima di eseguire la procedura seguente, è necessario avere già installato file binari che eseguiranno il percorso del file o l'estensione del nome file specificata. In questo esempio viene usata un'implementazione PHP disponibile da https://www.php.net/.

  1. Aprire Gestione Internet Information Services (IIS):

    • Se si usa Windows Server 2012 o Windows Server 2012 R2:

      • Sulla barra delle applicazioni fare clic su Server Manager, su Strumentie quindi su Gestione Internet Information Services (IIS).
    • Se usi Windows 8 o Windows 8.1:

      • Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
      • Fare clic su strumenti Amministrazione istrative, quindi fare doppio clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Server 2008 o Windows Server 2008 R2:

      • Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti Amministrazione istrative e quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Vista o Windows 7:

      • Sulla barra delle applicazioni fare clic su Start e quindi su Pannello di controllo.
      • Fare doppio clic su strumenti Amministrazione istrative e quindi fare doppio clic su Gestione Internet Information Services (IIS).
  2. Nel riquadro Connessione ions fare clic sul nome del server per cui si desidera configurare le impostazioni fastCGI.

  3. Nel riquadro Home fare doppio clic su FastCGI Impostazioni.
    Screenshot dell'icona fast C G I Impostazioni selezionata nel riquadro Home di edizione Standard RVER.

  4. Evidenziare l'applicazione PHP nel riquadro Impostazioni FastCGI, quindi fare clic su Modifica nel riquadro Azioni
    Screenshot dell'applicazione P H P selezionata nel riquadro Fast C G I Impostazioni.

  5. Nella finestra di dialogo Modifica applicazione FastCGI fare clic sui puntini di sospensione (...) accanto a EnvironmentVariables per aprire l'editor di raccolta delle variabili di ambiente.
    Screenshot della finestra di dialogo Edit Fast C G I Application con le opzioni specificate.

  6. Nella finestra di dialogo Editor raccoltaVariables fare clic su Aggiungi.
    Screenshot di una finestra di dialogo editor raccolta variabili di ambiente vuota prima di aggiungere una nuova variabile.

  7. Immettere le informazioni seguenti e quindi fare clic su OK.

    • Immettere "PHP_FCGI_MAX_REQUESTS" come Nome.

    • Immettere "10000" come Valore.

      Screenshot dopo aver aggiunto la nuova variabile di ambiente con le proprietà specificate.

  8. Fare clic su OK per chiudere la finestra di dialogo Aggiungi applicazione FastCGI.

Impostazione

È possibile configurare l'elemento <fastCgi> a livello di server nel file ApplicationHost.config o a livello di sito, a livello di applicazione o a livello di directory in un file Web.config.

Attributi

Nessuno.

Elementi figlio

Elemento Descrizione
application Elemento facoltativo.

Aggiunge una definizione del pool di processi FastCGI alla raccolta di definizioni di pool di processi FastCGI.

Esempio di configurazione

L'esempio di configurazione seguente aggiunge un'applicazione FastCGI per PHP, imposta l'attributo instanceMaxRequests su "10000" e imposta la PHP_FCGI_MAX_REQUESTS variabile di ambiente su "10000".

<fastCgi>
   <application fullPath="C:\PHP\php-cgi.exe"
         arguments=""
         maxInstances="4"
         idleTimeout="300"
         activityTimeout="30"
         requestTimeout="90"
         instanceMaxRequests="10000"
         protocol="NamedPipe"
         flushNamedPipe="false">
      <environmentVariables>
         <environmentVariable
            name="PHP_FCGI_MAX_REQUESTS"
            value="10000" />
      </environmentVariables>
   </application>
</fastCgi>

Nota

Per PHP, il valore della variabile di PHP_FCGI_MAX_REQUESTS ambiente deve essere un numero minore o uguale al valore specificato dall'attributo instanceMaxRequests dell'elemento FastCGI <application> .

Nell'esempio di configurazione seguente viene aggiunto un mapping globale del gestore FastCGI per i file PHP a IIS e viene specificato il percorso completo di un file eseguibile FastCGI.

<configuration>
   <location path="" overrideMode="Allow">
      <system.webServer>
         <handlers>
            <add name="PHP-FastCGI"
                path="*.php"
                verb="GET,HEAD,POST"
                modules="FastCgiModule"
                scriptProcessor="C:\PHP\php-cgi.exe"
                resourceType="Either"
                requireAccess="Script" />
         </handlers>
      </system.webServer>
   </location>
</configuration>

Nota

Le impostazioni fastCGI possono essere configurate per sito tramite l'uso di un'applicazione FastCGI formattata in modo speciale e tramite mapping del gestore, distinti in base alla corrispondenza degli attributi fullPath e degli argomenti per un <application> elemento con l'attributo scriptProcessor corrispondente nel mapping per il <handlers> processo FastCGI. Per creare questi mapping, le impostazioni negli attributi fullPath e arguments per un <application> elemento devono essere aggiunte all'attributo scriptProcessor nel <handlers> mapping per il processo FastCGI e separate dal carattere "|" della pipe. Questa combinazione funge da chiave univoca per ogni applicazione FastCGI. Ad esempio, l'estratto di configurazione seguente mostra due elementi fastCgi>/<application> di esempio <e i> mapping dei gestori corrispondenti <per due gestori PHP specifici del sito:

<fastCgi>
   <application fullPath="C:\PHP\php-cgi.exe"
      arguments="-d open_basedir=C:\Websites\Website1" />
   <application fullPath="C:\PHP\php-cgi.exe"
      arguments="-d open_basedir=C:\Websites\Website2" />
</fastCgi>

<system.webServer>
   <handlers accessPolicy="Read, Script"> 
      <add name="PHP via FastCGI 1"
         path="*.php"
         verb="*"
         modules="FastCgiModule"
         scriptProcessor="C:\PHP\php-cgi.exe|-d open_basedir=C:\Websites\Website1"
         resourceType="Unspecified"
         requireAccess="Script" />
      <add name="PHP via FastCGI 2"
         path="*.php"
         verb="*"
         modules="FastCgiModule"
         scriptProcessor="C:\PHP\php-cgi.exe|-d open_basedir=C:\Websites\Website2"
         resourceType="Unspecified"
         requireAccess="Script" />
</handlers>
</system.webServer>

Codice di esempio

Gli esempi di codice seguenti aggiungono un'applicazione FastCGI per PHP, impostano l'attributo instanceMaxRequests su "10000" e impostano la PHP_FCGI_MAX_REQUESTS variabile di ambiente su "10000". Ogni esempio aggiunge anche un mapping globale del gestore FastCGI per i file PHP a IIS e specifica il percorso completo di un file eseguibile FastCGI.

AppCmd.exe

appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='C:\PHP\php-cgi.exe',arguments='',maxInstances='4',idleTimeout='300',activityTimeout='30',requestTimeout='90',instanceMaxRequests='10000',protocol='NamedPipe',flushNamedPipe='False']" /commit:apphost

appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='C:\PHP\php-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']" /commit:apphost

appcmd.exe set config -section:system.webServer/handlers /+"[name='PHP-FastCGI',path='*.php',verb='GET,HEAD,POST',modules='FastCgiModule',scriptProcessor='C:\PHP\php-cgi.exe',resourceType='Either',requireAccess='Script']" /commit:apphost

Nota

È necessario assicurarsi di impostare il parametro commit su apphost quando si usa AppCmd.exe per configurare queste impostazioni. In questo modo le impostazioni di configurazione vengono confermate nella sezione relativa al percorso appropriato nel file ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection fastCgiSection = config.GetSection("system.webServer/fastCgi");
         ConfigurationElementCollection fastCgiCollection = fastCgiSection.GetCollection();
         ConfigurationElement applicationElement = fastCgiCollection.CreateElement("application");
         applicationElement["fullPath"] = @"C:\PHP\php-cgi.exe";
         applicationElement["arguments"] = @"";
         applicationElement["maxInstances"] = 4;
         applicationElement["idleTimeout"] = 300;
         applicationElement["activityTimeout"] = 30;
         applicationElement["requestTimeout"] = 90;
         applicationElement["instanceMaxRequests"] = 10000;
         applicationElement["protocol"] = @"NamedPipe";
         applicationElement["flushNamedPipe"] = false;

         ConfigurationElementCollection environmentVariablesCollection = applicationElement.GetCollection("environmentVariables");
         ConfigurationElement environmentVariableElement = environmentVariablesCollection.CreateElement("environmentVariable");
         environmentVariableElement["name"] = @"PHP_FCGI_MAX_REQUESTS";
         environmentVariableElement["value"] = @"10000";
         environmentVariablesCollection.Add(environmentVariableElement);
         fastCgiCollection.Add(applicationElement);

         ConfigurationSection handlersSection = config.GetSection("system.webServer/handlers");
         ConfigurationElementCollection handlersCollection = handlersSection.GetCollection();
         ConfigurationElement addElement = handlersCollection.CreateElement("add");
         addElement["name"] = @"PHP-FastCGI";
         addElement["path"] = @"*.php";
         addElement["verb"] = @"GET,HEAD,POST";
         addElement["modules"] = @"FastCgiModule";
         addElement["scriptProcessor"] = @"C:\PHP\php-cgi.exe";
         addElement["resourceType"] = @"Either";
         addElement["requireAccess"] = @"Script";
         handlersCollection.AddAt(0, addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim fastCgiSection As ConfigurationSection = config.GetSection("system.webServer/fastCgi")
      Dim fastCgiCollection As ConfigurationElementCollection = fastCgiSection.GetCollection
      Dim applicationElement As ConfigurationElement = fastCgiCollection.CreateElement("application")
      applicationElement("fullPath") = "C:\PHP\php-cgi.exe"
      applicationElement("arguments") = ""
      applicationElement("maxInstances") = 4
      applicationElement("idleTimeout") = 300
      applicationElement("activityTimeout") = 30
      applicationElement("requestTimeout") = 90
      applicationElement("instanceMaxRequests") = 10000
      applicationElement("protocol") = "NamedPipe"
      applicationElement("flushNamedPipe") = False

      Dim environmentVariablesCollection As ConfigurationElementCollection = applicationElement.GetCollection("environmentVariables")
      Dim environmentVariableElement As ConfigurationElement = environmentVariablesCollection.CreateElement("environmentVariable")
      environmentVariableElement("name") = "PHP_FCGI_MAX_REQUESTS"
      environmentVariableElement("value") = "10000"
      environmentVariablesCollection.Add(environmentVariableElement)
      fastCgiCollection.Add(applicationElement)

      Dim handlersSection As ConfigurationSection = config.GetSection("system.webServer/handlers")
      Dim handlersCollection As ConfigurationElementCollection = handlersSection.GetCollection
      Dim addElement As ConfigurationElement = handlersCollection.CreateElement("add")
      addElement("name") = "PHP-FastCGI"
      addElement("path") = "*.php"
      addElement("verb") = "GET,HEAD,POST"
      addElement("modules") = "FastCgiModule"
      addElement("scriptProcessor") = "C:\PHP\php-cgi.exe"
      addElement("resourceType") = "Either"
      addElement("requireAccess") = "Script"
      handlersCollection.AddAt(0, addElement)

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var fastCgiSection = adminManager.GetAdminSection("system.webServer/fastCgi", "MACHINE/WEBROOT/APPHOST");
var fastCgiCollection = fastCgiSection.Collection;
var applicationElement = fastCgiCollection.CreateNewElement("application");
applicationElement.Properties.Item("fullPath").Value = "C:\\PHP\\php-cgi.exe";
applicationElement.Properties.Item("arguments").Value = "";
applicationElement.Properties.Item("maxInstances").Value = 4;
applicationElement.Properties.Item("idleTimeout").Value = 300;
applicationElement.Properties.Item("activityTimeout").Value = 30;
applicationElement.Properties.Item("requestTimeout").Value = 90;
applicationElement.Properties.Item("instanceMaxRequests").Value = 10000;
applicationElement.Properties.Item("protocol").Value = "NamedPipe";
applicationElement.Properties.Item("queueLength").Value = 1000;
applicationElement.Properties.Item("flushNamedPipe").Value = false;
applicationElement.Properties.Item("rapidFailsPerMinute").Value = 10;

var environmentVariablesCollection = applicationElement.ChildElements.Item("environmentVariables").Collection;
var environmentVariableElement = environmentVariablesCollection.CreateNewElement("environmentVariable");
environmentVariableElement.Properties.Item("name").Value = "PHP_FCGI_MAX_REQUESTS";
environmentVariableElement.Properties.Item("value").Value = "10000";
environmentVariablesCollection.AddElement(environmentVariableElement);
fastCgiCollection.AddElement(applicationElement);

var handlersSection = adminManager.GetAdminSection("system.webServer/handlers", "MACHINE/WEBROOT/APPHOST");
var handlersCollection = handlersSection.Collection;
var addElement = handlersCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "PHP-FastCGI";
addElement.Properties.Item("path").Value = "*.php";
addElement.Properties.Item("verb").Value = "GET,HEAD,POST";
addElement.Properties.Item("modules").Value = "FastCgiModule";
addElement.Properties.Item("scriptProcessor").Value = "C:\\PHP\\php-cgi.exe";
addElement.Properties.Item("resourceType").Value = "Either";
addElement.Properties.Item("requireAccess").Value = "Script";
handlersCollection.AddElement(addElement, 0);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set fastCgiSection = adminManager.GetAdminSection("system.webServer/fastCgi", "MACHINE/WEBROOT/APPHOST")
Set fastCgiCollection = fastCgiSection.Collection
Set applicationElement = fastCgiCollection.CreateNewElement("application")
applicationElement.Properties.Item("fullPath").Value = "C:\PHP\php-cgi.exe"
applicationElement.Properties.Item("arguments").Value = ""
applicationElement.Properties.Item("maxInstances").Value = 4
applicationElement.Properties.Item("idleTimeout").Value = 300
applicationElement.Properties.Item("activityTimeout").Value = 30
applicationElement.Properties.Item("requestTimeout").Value = 90
applicationElement.Properties.Item("instanceMaxRequests").Value = 10000
applicationElement.Properties.Item("protocol").Value = "NamedPipe"
applicationElement.Properties.Item("queueLength").Value = 1000
applicationElement.Properties.Item("flushNamedPipe").Value = false
applicationElement.Properties.Item("rapidFailsPerMinute").Value = 10

Set environmentVariablesCollection = applicationElement.ChildElements.Item("environmentVariables").Collection
Set environmentVariableElement = environmentVariablesCollection.CreateNewElement("environmentVariable")
environmentVariableElement.Properties.Item("name").Value = "PHP_FCGI_MAX_REQUESTS"
environmentVariableElement.Properties.Item("value").Value = "10000"
environmentVariablesCollection.AddElement(environmentVariableElement)
Call fastCgiCollection.AddElement(applicationElement)

Set handlersSection = adminManager.GetAdminSection("system.webServer/handlers", "MACHINE/WEBROOT/APPHOST")
Set handlersCollection = handlersSection.Collection
Set addElement = handlersCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "PHP-FastCGI"
addElement.Properties.Item("path").Value = "*.php"
addElement.Properties.Item("verb").Value = "GET,HEAD,POST"
addElement.Properties.Item("modules").Value = "FastCgiModule"
addElement.Properties.Item("scriptProcessor").Value = "C:\PHP\php-cgi.exe"
addElement.Properties.Item("resourceType").Value = "Either"
addElement.Properties.Item("requireAccess").Value = "Script"
Call handlersCollection.AddElement(addElement, 0)

adminManager.CommitChanges()