Applicazione <FastCGI>

Panoramica

L'elemento FastCGI <application> contiene le impostazioni di configurazione per una definizione specifica del pool di processi FastCGI. Quando si usa FastCGI, IIS userà il valore nell'attributo maxInstances dell'elemento <application> per determinare il numero di processi FastCGI che possono essere eseguiti nel pool di processi.

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 <application> non è stato modificato in IIS 10.0.
IIS 8.5 L'elemento <application> non è stato modificato in IIS 8.5.
IIS 8.0 Il valore predefinito dell'attributo maxInstances è stato modificato da 4 a 0 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 <application><fastCgi> della raccolta è 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 della finestra di dialogo Ruoli server. C G I è selezionato e evidenziato.
  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 della finestra di dialogo Funzionalità di Windows. C G I è selezionato nel menu espanso.
  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 della pagina Servizi ruolo. C G I è evidenziato.
  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 della finestra di dialogo Funzionalità di Windows. C G I è evidenziato.

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. Questo esempio usa un'implementazione PHP disponibile da 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 della home page del sito Web predefinito. L'icona per Mapping del gestore è evidenziata.

  4. Nel riquadro Azioni fare clic su Aggiungi mapping moduli
    Screenshot della finestra I S Manager che mostra la pagina Mapping del gestore.

  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.

    • 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 della 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 della finestra di dialogo Aggiungi informazioni sul mapping del modulo.

    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, seguire la procedura descritta nella sezione How to create a global FastCGI handler mapping for PHP (Come creare un mapping globale 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 della home page del server. La Impostazioni Fast C G I è evidenziata.

  4. Nel riquadro Azioni fare clic su Aggiungi applicazione.

    Screenshot della pagina Fast C G I Impostazioni in I S Manager.

  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 variabile di ambiente PHP_FCGI_MAX_REQUESTS.

      Screenshot della finestra di dialogo Aggiungi applicazione 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 della finestra di dialogo Editor raccolta variabili di ambiente.

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

    • Immettere "PHP_FCGI_MAX_REQUESTS" come Nome.

    • Immettere "10000" come Valore.

      Screenshot della finestra di dialogo Editor raccolta variabili di ambiente. P H P F G I Max Requests è evidenziato nel campo Membri.

  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. Questo esempio usa un'implementazione PHP disponibile da 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 della home page del server in I S Manager. L'icona THe per fast C G I Impostazioni è evidenziata.

  4. Evidenziare l'applicazione PHP nel riquadro Impostazioni FastCGI, quindi fare clic su Modifica nel riquadro Azioni.

    Screenshot della pagina Fast C G I Impostazioni all'interno di I S Manager.

  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 Modifica applicazione Fast C G I.

  6. Nella finestra di dialogo Editor raccoltaVariables fare clic su Aggiungi.

    Screenshot del riquadro Editor raccolta variabili di ambiente.

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

    • Immettere "PHP_FCGI_MAX_REQUESTS" come Nome.

    • Immettere "10000" come Valore.

      Screenshot del riquadro Editor raccolta variabili di ambiente. P H P F C G I è evidenziato.

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

Impostazione

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

Attributi

Attributo Descrizione
activityTimeout Attributo uint facoltativo.

Specifica il tempo massimo, in secondi, che un processo FastCGI può richiedere per l'elaborazione. I valori accettabili sono compresi nell'intervallo compreso tra 10 e 3600.

Il valore predefinito in IIS 7.0 è 30. Il valore predefinito per IIS 7.5 è 70.
arguments Attributo stringa facoltativo.

Specifica gli argomenti della riga di comando per il processo FastCGI.
flushNamedPipe Attributo Boolean facoltativo.

Specifica se le named pipe vengono scaricate alla fine di ogni richiesta. Questa proprietà si applica solo quando si usa il protocollo named pipe.

Il valore predefinito è false.
fullPath Attributo stringa obbligatorio.

Specifica il percorso completo del processo FastCGI.
idleTimeout Attributo uint facoltativo.

Specifica la quantità massima di tempo, in secondi, che un processo FastCGI può essere inattivo prima dell'arresto del processo. I valori accettabili sono compresi nell'intervallo compreso tra 10 e 604800.

Il valore predefinito è 300.
instanceMaxRequests Attributo uint facoltativo.

Specifica il numero massimo di richieste che possono essere elaborate da ogni processo di lavoro FastCGI prima che venga riciclato. I valori accettabili sono compresi nell'intervallo compreso tra 1 e 10000000.

Il valore predefinito è 200.
maxInstances Attributo uint facoltativo.

Specifica il numero massimo di processi di lavoro FastCGI che possono essere avviati in un pool di applicazioni. I valori accettabili sono compresi nell'intervallo compreso tra 0 e 10000.

Il valore predefinito è 0.
monitorChangesTo Attributo della stringa di opzione.

Specifica il percorso completo di un file da monitorare per le modifiche. Quando vengono rilevate modifiche al file, IIS termina e riavvia l'applicazione FastCGI specificata nell'attributo fullPath .

Nota: questo attributo è stato aggiunto in IIS 7.5.

Non esiste alcun valore predefinito.
protocol Attributo di enumerazione facoltativo.

Specifica il meccanismo di trasporto utilizzato per comunicare con il processo FastCGI.

L'attributo del protocollo può essere uno dei valori possibili seguenti:
Valore Descrizione
NamedPipe Il protocollo named-pipe verrà usato per comunicare con il processo di lavoro FastCGI.
Tcp Il protocollo TCP verrà usato per comunicare con il processo di lavoro FastCGI.
Il valore predefinito è NamedPipe.
queueLength Attributo uint facoltativo.

Specifica il numero massimo di richieste che è possibile accodare per un pool di processi FastCGI. I valori accettabili sono compresi nell'intervallo compreso tra 1 e 10000000.

Il valore predefinito è 1000.
requestTimeout Attributo uint facoltativo.

Specifica il tempo massimo, espresso in secondi, che può essere richiesto da una richiesta di processo FastCGI. I valori accettabili sono compresi nell'intervallo compreso tra 10 e 604800.

Il valore predefinito è 90.
signalBeforeTerminateSeconds Attributo uint facoltativo.

Specifica il tempo di attesa di IIS dopo che IIS segnala a un'applicazione FastCGI che deve essere arrestata. Quando questo attributo è impostato su un valore maggiore di zero, IIS creerà un evento ereditabile e passerà il valore handle per l'evento a un processo FastCGI come valore della variabile di _FCGI_SHUTDOWN_EVENT_ ambiente.

Nota: questo attributo è stato aggiunto in IIS 7.5.

Il valore predefinito è 0.
stderrMode Attributo di enumerazione facoltativo.

Specifica il comportamento che IIS userà per gli errori restituiti dalle applicazioni FastCGI nel flusso STDERR.

Nota: questo attributo è stato aggiunto in IIS 7.5.

L'attributo stderrMode può essere uno dei valori possibili seguenti:
Valore Descrizione
ReturnStdErrIn500 Specifica che IIS restituirà un errore HTTP 500 e visualizzerà il contenuto nel flusso STDERR al client. Nota: corrisponde al comportamento di IIS 7.0.

Il valore numerico è 0.
ReturnGeneric500 Specifica che IIS restituirà un errore HTTP 500 generico al client. Ciò impedisce che il contenuto nel flusso STDERR venga restituito al client.

Il valore numerico è 1.
IgnoreAndReturn200 Specifica che IIS ignorerà il testo nel flusso STDERR e restituirà un errore HTTP 200 e restituirà il contenuto del flusso STDOUT al client.

Il valore numerico è 2.
TerminateProcess Specifica che IIS terminerà il processo FastCGI e restituirà un errore HTTP 500 generico al client.

Il valore numerico è 3.
Il valore predefinito è ReturnStdErrIn500.

Elementi figlio

Elemento Descrizione
environmentVariables Elemento facoltativo.

Specifica una raccolta di variabili di ambiente che IIS passerà all'applicazione FastCGI.

Esempio di configurazione

L'esempio di configurazione seguente aggiunge un'applicazione FastCGI per PHP, imposta l'attributo instanceMaxRequests su "10000" e imposta la variabile di ambiente PHP_FCGI_MAX_REQUESTS 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 ambiente PHP_FCGI_MAX_REQUESTS 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 variabile di ambiente PHP_FCGI_MAX_REQUESTS 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()