Partager via


Application FastCGI <application>

Vue d’ensemble

L’élément <application> FastCGI contient les paramètres de configuration d’une définition de pool de processus FastCGI spécifique. Lorsque FastCGI est utilisé, IIS utilise la valeur dans l’attribut maxInstances de l’élément <application> pour déterminer le nombre de processus FastCGI qui peuvent s’exécuter dans le pool de processus.

La définition de pool d’applications FastCGI la plus simple nécessite d’inclure l’attribut fullPath dans un élément <application> pour définir les fichiers binaires à utiliser pour l’infrastructure d’application spécifique. Pour l’infrastructure PHP, définissez l’attribut fullPath sur le répertoire et le nom de fichier des fichiers binaires PHP.

D’autres attributs sont facultatifs et vous laissent configurer un certain nombre d’autres paramètres. Ceux-ci incluent le nombre maximal de requêtes qu’un processus de travail FastCGI peut traiter avant d’être recyclé, le nombre maximal de processus de travail pour un pool d'applications et la durée maximale de traitement d’une requête FastCGI.

Remarque

Pour traiter les demandes à l’aide de FastCGI, vous devez d’abord mapper le chemin d’accès et les extensions de nom de fichier spécifiques au module FastCGI et spécifier le processus FastCGI cible en tant que processeur de script.

Nouveautés dans IIS 7.5

IIS 7.5 a ajouté les attributs suivants à l’élément <fastCgi>/<application> :

  • L’attribut monitorChangesTo vous permet de spécifier un fichier permettant de surveiller les modifications susceptibles d’affecter le comportement d’une application FastCGI. Par exemple, si vous utilisez l’infrastructure PHP, vous pouvez configurer IIS pour surveiller le fichier PHP.INI pour les modifications en spécifiant le chemin complet du fichier dans l’attribut monitorChangesTo.
  • L’attribut stderrMode spécifie la façon dont IIS 7 gérera les erreurs renvoyées par une application FastCGI via le flux STDERR.
  • L’attribut signalBeforeTerminateSeconds vous permet de configurer IIS pour attendre une période spécifiée après que IIS signale à une application FastCGI qu’il doit arrêter. Cela permet à une application FastCGI de nettoyer tous les paramètres avant que IIS ne termine le processus.

Compatibilité

Version Notes
IIS 10.0 L’élément <application> n’a pas été modifié dans IIS 10.0.
IIS 8.5 L’élément <application> n’a pas été modifié dans IIS 8.5.
IIS 8.0 La valeur par défaut de l’attribut maxInstances a été modifiée de 4 à 0 dans IIS 8.0.
IIS 7.5 L’élément <application> de la collection <fastCgi> a été mis à jour dans IIS 7.5 avec les attributs monitorChangesTo, stderrMode et signalBeforeTerminateSeconds.
IIS 7.0 L’élément <application> de la collection <fastCgi> a été introduit dans IIS 7.0.
IIS 6.0 S/O

Programme d’installation

Pour utiliser l’environnement FastCGI, vous devez d’abord installer le service de rôle CGI. Le processus d’installation inscrit le service de rôle CGI (Common Gateway Interface) dans les éléments <globalModules> et <modules>. Vous n’avez pas besoin d’effectuer d’autres étapes pour installer l’environnement FastCGI.

Windows Server 2012 ou Windows Server 2012 R2

  1. Dans la barre des tâches, cliquez sur Gestionnaire de serveur.
  2. Dans Gestionnaire de serveur, cliquez sur le menu Gérer, puis sur Ajouter des rôles et des fonctionnalités.
  3. Dans l’Assistant Ajout de rôles et de fonctionnalités, cliquez sur Suivant. Sélectionnez le type d’installation, puis cliquez sur Suivant. Sélectionnez le serveur de destination, puis cliquez sur Suivant.
  4. À la page Rôles de serveur, développez Serveur web (IIS), Serveur web, Développement d’applications, puis sélectionnez CGI. Sélectionnez Suivant.
    Capture d’écran de la boîte de dialogue Rôles de serveur. C G I est case activée et mis en surbrillance.
  5. Dans la page Sélectionner des fonctionnalités, cliquez sur Suivant.
  6. Dans la page Confirmer les sélections d’installation, cliquez sur Installer.
  7. Dans la page Résultats , cliquez sur Fermer.

Windows 8 ou Windows 8.1

  1. Dans l’écran d’accueil, déplacez le pointeur jusqu’au coin inférieur gauche, cliquez avec le bouton droit sur le bouton Démarrer, puis cliquez sur Panneau de configuration.
  2. Dans Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
  3. Développez Internet Information Services, Services World Wide Web, Fonctionnalités de développement d’applications, puis sélectionnez CGI.
    Capture d’écran de la boîte de dialogue Fonctionnalités windows. C G I est sélectionné dans le menu développé.
  4. Cliquez sur OK.
  5. Cliquez sur Fermer.

Windows Server 2008 ou Windows Server 2008 R2

  1. Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire de serveur.
  2. Dans le volet hiérarchie du Gestionnaire de serveur, développez Rôles, puis cliquez sur Serveur web (IIS).
  3. Dans le volet Serveur web (IIS), faites défiler jusqu’à la section Services de rôle, puis cliquez sur Ajouter des services de rôle.
  4. À la page Sélectionner des services de rôle de l’Assistant Ajout de services de rôle, sélectionnez CGI puis cliquez sur Suivant.
    Capture d’écran de la page Services de rôle. C G I est mis en surbrillance.
  5. Dans la page Confirmer les sélections pour l'installation, cliquez sur Installer.
  6. Dans la page Résultats , cliquez sur Fermer.

Windows Vista ou Windows 7

  1. Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
  2. Dans Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
  3. Développez Internet Information Services, sélectionnez CGI, puis cliquez sur OK.
    Capture d’écran de la boîte de dialogue Fonctionnalités Windows. C G I est mis en surbrillance.

Procédure

Remarque pour les utilisateurs d’IIS 7.0 : certaines étapes décrites dans cette section peuvent nécessiter l’installation du pack d’administration Microsoft pour IIS 7.0, qui inclut une interface utilisateur pour les paramètres FastCGI. Pour installer le pack d’administration Microsoft pour IIS 7.0, consultez l’URL suivante :

Comment créer un mappage de gestionnaire FastCGI global pour PHP

Remarque

Avant que la procédure suivante fonctionne, vous devez avoir déjà installé des fichiers binaires qui exécutent le chemin d’accès du fichier ou l’extension de nom de fichier que vous spécifiez. Cet exemple utilise une implémentation PHP disponible sur www.php.net.

  1. Ouvrez le Gestionnaire Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Cliquez sur Démarrer, placez le curseur sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, cliquez sur le nom du serveur pour lequel vous souhaitez configurer les mappages de gestionnaires FastCGI.

  3. Dans le volet Accueil, double-cliquez sur Mappages de gestionnaires.
    Capture d’écran de la page d’accueil du site web par défaut. L’icône des mappages de gestionnaires est mise en surbrillance.

  4. Dans le volet Actions, cliquez sur Ajouter un mappage de modules.
    Capture d’écran de la fenêtre I S Manager affichant la page Mappages de gestionnaires.

  5. Saisissez les informations suivantes :

    • Entrez l’extension de nom de fichier dans la zone de texte Chemin de requête. Par exemple, « *.php ».

    • Cliquez sur FastCgiModule dans la liste déroulante Module.

    • Entrez le chemin d’accès au moteur de script dans la zone Exécutable. Par exemple, « C:\PHP\php-cgi.exe ».

    • Entrez un nom unique pour le mappage de gestionnaire dans la zone Nom. Par exemple, « PHP-FastCGI ».

      Capture d’écran de la boîte de dialogue Ajouter un mappage de module.

    • Cliquez sur Restrictions des demandes.

    • Sélectionnez Appeler le gestionnaire uniquement si la demande est mappée.

    • Cliquez pour sélectionner l’option Fichier ou Dossier.

    • Cliquez sur OK.

      Capture d’écran de la boîte de dialogue Restrictions de demande.

  6. Cliquez sur OK.

  7. Si vous êtes invité à créer une application FastCGI dans la boîte de dialogue Ajouter un mappage de module, cliquez sur Oui.

    Capture d’écran de la boîte de dialogue Ajouter des informations de mappage de module.

    Remarque

    Cela crée automatiquement une application FastCGI pour le mappage de gestionnaire que vous venez de créer. Si vous choisissez Non, vous pouvez créer manuellement une application FastCGI ultérieurement.

Comment créer une application FastCGI pour PHP

Remarque

Avant que la procédure suivante fonctionne, vous devez avoir déjà installé des fichiers binaires qui exécutent le chemin d’accès du fichier ou l’extension de nom de fichier que vous spécifiez. Cet exemple utilise une implémentation PHP disponible sur www.php.net.

Remarque

L’ajout d’une application FastCGI n’ajoute pas automatiquement un mappage de gestionnaire. Pour ce faire, suivez les étapes décrites dans la section Procédure de création d’un mappage global de gestionnaire FastCGI pour PHP de cet article.

  1. Ouvrez le Gestionnaire Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Cliquez sur Démarrer, placez le curseur sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, cliquez sur le nom du serveur pour lequel vous souhaitez configurer les paramètres FastCGI.

  3. Dans le volet Accueil, double-cliquez sur Paramètres FastCGI.

    Capture d’écran de la page d’accueil du serveur. La Paramètres Fast C G est mise en surbrillance.

  4. Dans le volet Actions, cliquez sur Ajouter un pool d’applications.

    Capture d’écran de la page Fast C G I Paramètres dans I I S Manager.

  5. Dans la boîte de dialogue Ajouter une application FastCGI, entrez les informations suivantes :

    • Entrez le chemin d’accès au moteur de script dans la zone Chemin d’accès complet. Par exemple, « C:\PHP\php-cgi.exe ».

    • Entrez le nombre maximal de requêtes pour l’application FastCGI.

      Remarque

      Pour PHP, ce nombre doit être inférieur ou égal au nombre maximal de requêtes pour l’environnement PHP, qui est configuré à l’aide de la variable d’environnement PHP_FCGI_MAX_REQUESTS.

      Capture d’écran de la boîte de dialogue Ajouter une application Fast C G I.

  6. Cliquez sur les points de suspension () en regard de EnvironmentVariables pour ouvrir l’éditeur de collections de variables d’environnement.

  7. Dans la boîte de dialogue Éditeur de collections EnvironmentVariables, cliquez sur Ajouter.

    Capture d’écran de la boîte de dialogue Éditeur de collection des variables d’environnement.

  8. Entrez les informations suivantes, puis cliquez sur OK.

    • Entrez « PHP_FCGI_MAX_REQUESTS » pour le nom.

    • Entrez « 10000 » pour la valeur.

      Capture d’écran de la boîte de dialogue Éditeur de collection des variables d’environnement. Les demandes max.P.P.C G. sont mises en surbrillance dans le champ Membres.

  9. Cliquez sur OK pour fermer la boîte de dialogue Ajouter une application FastCGI.

Ajout d’une variable d’environnement FastCGI pour PHP

Remarque

Avant que la procédure suivante fonctionne, vous devez avoir déjà installé des fichiers binaires qui exécutent le chemin d’accès du fichier ou l’extension de nom de fichier que vous spécifiez. Cet exemple utilise une implémentation PHP disponible sur www.php.net.

  1. Ouvrez le Gestionnaire Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Cliquez sur Démarrer, placez le curseur sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, cliquez sur le nom du serveur pour lequel vous souhaitez configurer les paramètres FastCGI.

  3. Dans le volet Accueil, double-cliquez sur Paramètres FastCGI.

    Capture d’écran de la page d’accueil du serveur dans I I S Manager. L’icône THe pour Fast C G I Paramètres est mise en surbrillance.

  4. Mettez en surbrillance l’application PHP dans le volet Paramètres FastCGI, puis cliquez sur Modifier dans le volet Actions.

    Capture d’écran de la page Fast C G I Paramètres dans I I S Manager.

  5. Dans la boîte de dialogue Modifier l’application FastCGI, cliquez sur les points de suspension () en regard de EnvironmentVariables pour ouvrir l’éditeur de collections des variables d’environnement.

    Capture d’écran de la boîte de dialogue Modifier l’application Fast C G I.

  6. Dans la boîte de dialogue Éditeur de collections EnvironmentVariables, cliquez sur Ajouter.

    Capture d’écran du volet Éditeur de collection variables d’environnement.

  7. Entrez les informations suivantes, puis cliquez sur OK.

    • Entrez « PHP_FCGI_MAX_REQUESTS » pour le nom.

    • Entrez « 10000 » pour la valeur.

      Capture d’écran du volet Éditeur de collection variables d’environnement. P H H F C G I est mis en surbrillance.

  8. Cliquez sur OK pour fermer la boîte de dialogue Ajouter une application FastCGI.

Configuration

Vous pouvez configurer l’élément <application> au niveau du serveur dans le fichier ApplicationHost.config ou au niveau du site, de l’application ou du répertoire dans un fichier Web.config.

Attributs

Attribut Description
activityTimeout Attribut uint facultatif.

Spécifie la durée maximale, en secondes, qu’un processus FastCGI peut prendre pour traiter. Les valeurs acceptables sont comprises entre 10 et 3600.

La valeur par défaut dans IIS 7.0 est 30 ; la valeur par défaut pour IIS 7.5 est 70.
arguments Attribut de chaîne facultatif.

Spécifie les arguments de ligne de commande pour le processus FastCGI.
flushNamedPipe Attribut Boolean facultatif.

Spécifie si les canaux nommés sont vidés à la fin de chaque requête. Cette propriété s’applique uniquement lorsque le protocole de canal nommé est utilisé.

La valeur par défaut est false.
fullPath Attribut de chaîne requis.

Spécifie le chemin complet du processus FastCGI.
idleTimeout Attribut uint facultatif.

Spécifie la durée maximale, en secondes, pendant laquelle un processus FastCGI peut être inactif avant l’arrêt du processus. Les valeurs acceptables sont comprises entre 10 et 604800.

La valeur par défaut est 300.
instanceMaxRequests Attribut uint facultatif.

Spécifie le nombre maximal de requêtes qui peuvent être traitées par chaque processus de travail FastCGI avant de le recycler. Les valeurs acceptables sont comprises entre 1 et 10000000.

La valeur par défaut est 200.
maxInstances Attribut uint facultatif.

Spécifie le nombre maximal de processus de travail FastCGI qui peuvent être démarrés dans un pool d’applications. Les valeurs acceptables sont comprises entre 0 et 10000.

La valeur par défaut est 0.
monitorChangesTo Attribut de chaîne d’option.

Spécifie le chemin d’accès complet d’un fichier à surveiller pour les modifications. Lorsque les modifications apportées au fichier sont détectées, IIS termine et redémarre l’application FastCGI spécifiée dans l’attribut fullPath.

Remarque : cet attribut a été ajouté dans IIS 7.5.

Il n'y a pas de valeur par défaut.
protocol Attribut enum facultatif.

Spécifie le mécanisme de transport utilisé pour communiquer avec le processus FastCGI.

L’attribut protocole peut être l’une des valeurs possibles suivantes :
Valeur Description
NamedPipe Le protocole de canal nommé sera utilisé pour communiquer avec le processus de travail FastCGI.
Tcp Le protocole TCP sera utilisé pour communiquer avec le processus de travail FastCGI.
La valeur par défaut est NamedPipe.
queueLength Attribut uint facultatif.

Spécifie le nombre maximal de requêtes pouvant être mises en file d’attente pour un pool de processus FastCGI. Les valeurs acceptables sont comprises entre 1 et 10000000.

La valeur par défaut est 1000.
requestTimeout Attribut uint facultatif.

Spécifie la durée maximale, en secondes, qu’une demande de processus FastCGI peut prendre. Les valeurs acceptables sont comprises entre 10 et 604800.

La valeur par défaut est 90.
signalBeforeTerminateSeconds Attribut uint facultatif.

Spécifie la durée pendant laquelle IIS attend une fois qu’IIS signale à une application FastCGI qu’il doit arrêter. Lorsque cet attribut est défini sur une valeur supérieure à zéro, IIS crée un événement hérité et transmet la valeur du descripteur de l’événement à un processus FastCGI comme valeur de variable d’environnement _FCGI_SHUTDOWN_EVENT_.

Remarque : cet attribut a été ajouté dans IIS 7.5.

La valeur par défaut est 0.
stderrMode Attribut enum facultatif.

Spécifie le comportement que IIS utilisera pour les erreurs retournées par les applications FastCGI dans le flux STDERR.

Remarque : cet attribut a été ajouté dans IIS 7.5.

L’attribut stderrMode peut être l’une des valeurs possibles suivantes :
Valeur Description
ReturnStdErrIn500 Spécifie que IIS retourne une erreur HTTP 500 et affiche le contenu dans le flux STDERR au client. (Remarque : cela correspond au comportement de IIS 7.0.)

La valeur numérique est 0.
ReturnGeneric500 Spécifie que IIS retourne une erreur HTTP 500 générique au client. Cela empêche le contenu du flux STDERR d’être retourné au client.

La valeur numérique est 1.
IgnoreAndReturn200 Spécifie que IIS ignore le texte du flux STDERR et retourne une erreur HTTP 200, puis retourne le contenu du flux STDOUT au client.

La valeur numérique est 2.
TerminateProcess Spécifie que IIS met fin au processus FastCGI et retourne une erreur HTTP 500 générique au client.

La valeur numérique est 3.
La valeur par défaut est ReturnStdErrIn500.

Éléments enfants

Élément Description
environmentVariables Élément facultatif.

Spécifie une collection de variables d’environnement que IIS transmet à l’application FastCGI.

Exemple Configuration

L’exemple de configuration suivant ajoute une application FastCGI pour PHP, définit l’attribut instanceMaxRequests sur « 10000 », et définit la variable d’environnement PHP_FCGI_MAX_REQUESTS sur « 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>

Remarque

Pour PHP, la valeur de la variable d’environnement PHP_FCGI_MAX_REQUESTS doit être un nombre inférieur ou égal à la valeur spécifiée par l’attribut instanceMaxRequests de l’élément FastCGI <application>.

L’exemple de configuration suivant ajoute un mappage de gestionnaire FastCGI global pour les fichiers PHP à IIS et spécifie le chemin d’accès complet d’un fichier exécutable 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>

Remarque

Les paramètres FastCGI peuvent être configurés par site à l’aide d’une application FastCGI spécialement mise en forme et par des mappages de gestionnaires, qui se distinguent en faisant correspondre les attributs fullPath et arguments d’un élément <application> avec l’attribut scriptProcessor correspondant dans le mappage <handlers> pour le processus FastCGI. Pour créer ces mappages, les paramètres des attributs fullPath et arguments d’un élément <application> doivent être ajoutés à l’attribut scriptProcessor dans le mappage <handlers> du processus FastCGI et séparés par le caractère « | » du canal. Cette combinaison sert de clé unique pour chaque application FastCGI. Par exemple, l’extrait de configuration suivant montre deux exemples d’éléments <fastCgi >/<application> et leurs mappages de <gestionnaires> correspondants pour deux gestionnaires PHP spécifiques au site :

<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>

Exemple de code

Les exemples de code suivants ajoutent une application FastCGI pour PHP, définissent l’attribut instanceMaxRequests sur « 10000 », puis définissent la variable d’environnement PHP_FCGI_MAX_REQUESTS sur « 10000 ». Chaque exemple ajoute également un mappage de gestionnaire FastCGI global pour les fichiers PHP à IIS et spécifie le chemin complet d’un fichier exécutable 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

Remarque

Vous devez veiller à définir le paramètre commit sur apphost quand vous utilisez AppCmd.exe pour configurer ces paramètres. Cela valide les paramètres de configuration dans la section d’emplacement appropriée dans le fichier 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()