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
- Dans la barre des tâches, cliquez sur Gestionnaire de serveur.
- Dans Gestionnaire de serveur, cliquez sur le menu Gérer, puis sur Ajouter des rôles et des fonctionnalités.
- 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.
- À la page Rôles de serveur, développez Serveur web (IIS), Serveur web, Développement d’applications, puis sélectionnez CGI. Sélectionnez Suivant.
- Dans la page Sélectionner des fonctionnalités, cliquez sur Suivant.
- Dans la page Confirmer les sélections d’installation, cliquez sur Installer.
- Dans la page Résultats , cliquez sur Fermer.
Windows 8 ou Windows 8.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.
- Dans Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
- Développez Internet Information Services, Services World Wide Web, Fonctionnalités de développement d’applications, puis sélectionnez CGI.
- Cliquez sur OK.
- Cliquez sur Fermer.
Windows Server 2008 ou Windows Server 2008 R2
- Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire de serveur.
- Dans le volet hiérarchie du Gestionnaire de serveur, développez Rôles, puis cliquez sur Serveur web (IIS).
- 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.
- À 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.
- Dans la page Confirmer les sélections pour l'installation, cliquez sur Installer.
- Dans la page Résultats , cliquez sur Fermer.
Windows Vista ou Windows 7
- Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
- Dans Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
- Développez Internet Information Services, sélectionnez CGI, puis cliquez sur OK.
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.
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).
Dans le volet Connexions, cliquez sur le nom du serveur pour lequel vous souhaitez configurer les mappages de gestionnaires FastCGI.
Dans le volet Accueil, double-cliquez sur Mappages de gestionnaires.
Dans le volet Actions, cliquez sur Ajouter un mappage de modules.
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 ».
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.
Cliquez sur OK.
Si vous êtes invité à créer une application FastCGI dans la boîte de dialogue Ajouter un mappage de module, cliquez sur Oui.
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.
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).
Dans le volet Connexions, cliquez sur le nom du serveur pour lequel vous souhaitez configurer les paramètres FastCGI.
Dans le volet Accueil, double-cliquez sur Paramètres FastCGI.
Dans le volet Actions, cliquez sur Ajouter un pool d’applications.
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.
Cliquez sur les points de suspension (…) en regard de EnvironmentVariables pour ouvrir l’éditeur de collections de variables d’environnement.
Dans la boîte de dialogue Éditeur de collections EnvironmentVariables, cliquez sur Ajouter.
Entrez les informations suivantes, puis cliquez sur OK.
Entrez « PHP_FCGI_MAX_REQUESTS » pour le nom.
Entrez « 10000 » pour la valeur.
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.
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).
Dans le volet Connexions, cliquez sur le nom du serveur pour lequel vous souhaitez configurer les paramètres FastCGI.
Dans le volet Accueil, double-cliquez sur Paramètres FastCGI.
Mettez en surbrillance l’application PHP dans le volet Paramètres FastCGI, puis cliquez sur Modifier dans le volet Actions.
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.
Dans la boîte de dialogue Éditeur de collections EnvironmentVariables, cliquez sur Ajouter.
Entrez les informations suivantes, puis cliquez sur OK.
Entrez « PHP_FCGI_MAX_REQUESTS » pour le nom.
Entrez « 10000 » pour la valeur.
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 :
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 :
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()