FastCGI-Anwendung <application>

Übersicht

Das <application>-Element von FastCGI enthält die Konfigurationseinstellungen für eine spezifische FastCGI-Prozesspooldefinition. Bei Verwendung von FastCGI ermittelt IIS anhand des Werts im maxInstances-Attribut des <application>-Elements die Anzahl von FastCGI-Prozessen, die im Prozesspool ausgeführt werden können.

Bei der einfachsten FastCGI-Anwendungspooldefinition müssen Sie das fullPath-Attribut in ein <application>-Element einschließen, um die Binärdateien zu definieren, die für das spezifische Anwendungsframework verwendet werden sollen. Legen Sie für das PHP-Framework das fullPath-Attribut auf das Verzeichnis und den Dateinamen der PHP-Binärdateien fest.

Andere Attribute sind optional und ermöglichen es Ihnen, eine Reihe weiterer Parameter zu konfigurieren. Dazu gehören die maximale Anzahl von Anforderungen, die ein FastCGI-Arbeitsprozess verarbeiten kann, bevor er neu gestartet wird, sowie die maximale Anzahl von Arbeitsprozessen für einen Anwendungspool und die maximale Dauer einer FastCGI-Anforderung.

Hinweis

Um Anforderungen mithilfe von FastCGI zu verarbeiten, müssen Sie zuerst dem FastCGI-Modul den Pfad und die spezifischen Dateinamenerweiterungen zuordnen und den FastCGI-Zielprozess als Skriptprozessor angeben.

Neu in IIS 7.5

In IIS 7.5 wurden dem <fastCgi>/<application>-Element folgende Attribute hinzugefügt:

  • Mit dem monitorChangesTo-Attribut können Sie eine Datei angeben, die auf Änderungen überwacht werden soll, die sich ggf. auf das Verhalten einer FastCGI-Anwendung auswirken. Wenn Sie beispielsweise das PHP-Framework verwenden, können Sie IIS so konfigurieren, dass die Datei „PHP.INI“ auf Änderungen überwacht wird, indem Sie den vollständigen Pfad der Datei im monitorChangesTo-Attribut angeben.
  • Das stderrMode-Attribut gibt an, wie IIS 7 Fehler behandelt, die von einer FastCGI-Anwendung über den STDERR-Stream zurückgegeben werden.
  • Mit dem signalBeforeTerminateSeconds-Attribut können Sie IIS so konfigurieren, dass eine gewisse Zeit gewartet wird, nachdem IIS einer FastCGI-Anwendung signalisiert hat, dass sie heruntergefahren werden muss. Dadurch hat eine FastCGI-Anwendung Gelegenheit, alle Einstellungen zu bereinigen, bevor IIS den Prozess beendet.

Kompatibilität

Version Hinweise
IIS 10.0 Das <application>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <application>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Der Standardwert des maxInstances-Attributs wurde in IIS 8.0 von 4 in 0 geändert.
IIS 7.5 Das <application>-Element der <fastCgi>-Sammlung wurde in IIS 7.5 mit den Attributen monitorChangesTo, stderrMode und signalBeforeTerminateSeconds aktualisiert.
IIS 7.0 Das <application>-Element der <fastCgi>-Auflistung wurde in IIS 7.0 eingeführt.
IIS 6.0 N/V

Setup

Um die FastCGI-Umgebung verwenden zu können, müssen Sie zuerst den CGI-Rollendienst installieren. Der Installationsprozess registriert den CGI-Rollendienst (Common Gateway Interface, gemeinsame Gatewayschnittstelle) sowohl im <globalModules>-Element als auch im <modules>-Element. Sie müssen keine weiteren Schritte ausführen, um die FastCGI-Umgebung zu installieren.

Windows Server 2012 oder Windows Server 2012 R2

  1. Klicken Sie auf der Taskleiste auf Server-Manager.
  2. Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
  3. Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features auf Weiter. Wählen Sie den Installationstyp aus, und klicken Sie auf Weiter. Wählen Sie den Zielserver aus, und klicken Sie auf Weiter.
  4. Erweitern Sie auf der Seite Serverrollen die Option Webserver (IIS), erweitern Sie Webserver, erweitern Sie Anwendungsentwicklung, und wählen Sie dann CGI aus. Klicken Sie auf Weiter.
    Screenshot des Dialogfelds
  5. Klicken Sie auf der Seite Features auswählen auf Weiter.
  6. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  7. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows 8 oder Windows 8.1

  1. Bewegen Sie auf dem Startbildschirm den Mauszeiger ganz nach links unten, klicken Sie mit der rechten Maustaste auf die Starttaste und klicken Sie dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste > WWW-Dienste > Anwendungsentwicklungsfeatures, und wählen Sie anschließend CGI aus.
    Screenshot des Dialogfelds
  4. Klicken Sie auf OK.
  5. Klicken Sie auf Schließen.

Windows Server 2008 oder Windows Server 2008 R2

  1. Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungstools, und klicken Sie dann auf Server-Manager.
  2. Erweitern Sie im Hierarchiebereich des Server-Managers die Rollenund klicken Sie dann auf den Webserver (IIS) .
  3. Scrollen Sie im Bereich Webserver (IIS) zum Abschnitt Rollendienste, und klicken Sie dann auf Rollendienste hinzufügen.
  4. Wählen Sie auf der Seite Rollendienste auswählen des Assistenten zum Hinzufügen von Rollendiensten die Option CGI aus, und klicken Sie dann auf Weiter.
    Screenshot der Seite
  5. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  6. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows Vista oder Windows 7

  1. Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste, wählen Sie CGI aus, und klicken Sie anschließend auf OK.
    Screenshot des Dialogfelds

Gewusst wie

Hinweis für IIS 7.0-Benutzer: Einige der Schritte in diesem Abschnitt erfordern möglicherweise die Installation des Microsoft Administration Pack für IIS 7, das eine Benutzeroberfläche für FastCGI-Einstellungen enthält. Informationen zum Installieren des Microsoft Administration Pack für IIS 7 finden Sie unter der folgenden URL:

Erstellen einer globalen FastCGI-Handlerzuordnung für PHP

Hinweis

Damit das folgende Verfahren funktioniert, müssen Sie bereits Binärdateien installiert haben, die den von Ihnen angegebenen Dateipfad oder die von Ihnen angegebene Dateinamenerweiterung ausführen. In diesem Beispiel wird eine PHP-Implementierung verwendet, die unter www.php.net verfügbar ist.

  1. Öffnen Sie Internetinformationsdienste-Manager (IIS-Manager):

    • Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows 8 oder Windows 8.1 verwenden:

      • Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf "Systemsteuerung".
      • Klicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Vista oder Windows 7 verwenden:

      • Klicken Sie auf der Taskleiste auf "Start" und dann auf "Systemsteuerung".
      • Doppelklicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
  2. Klicken Sie im Bereich Verbindungen auf den Servernamen, für den Sie FastCGI-Handlerzuordnungen konfigurieren möchten.

  3. Doppelklicken Sie im Bereich Start auf Handlerzuordnungen.
    Screenshot der Startseite der Standardwebsite. Das Symbol für Handlerzuordnungen ist hervorgehoben.

  4. Klicken Sie im Bereich Aktionen auf Modulzuordnung hinzufügen.
    Screenshot des I S-Manager-Fensters mit der Seite

  5. Geben Sie die folgenden Informationen ein:

    • Geben Sie die Dateinamenerweiterung in das Textfeld Anforderungspfad ein. Beispiel: „*.php“.

    • Klicken Sie in der Dropdownliste Modul auf FastCgiModule.

    • Geben Sie den Pfad zur Skript-Engine in das Feld Ausführbare Datei ein. Beispiel: „C:\PHP\php-cgi.exe“.

    • Geben Sie einen eindeutigen Namen für die Handlerzuordnung in das Feld Name ein. Beispiel: „PHP-FastCGI“.

      Screenshot des Dialogfelds

    • Klicken Sie auf Anforderungseinschränkungen.

    • Aktivieren Sie das Kontrollkästchen Handler nur aufrufen, wenn die Anforderung Folgendem zugeordnet ist.

    • Klicken Sie auf die Option Datei oder Ordner, um sie auszuwählen.

    • Klicken Sie auf OK.

      Screenshot des Dialogfelds

  6. Klicken Sie auf OK.

  7. Wenn Sie im Dialogfeld Modulzuordnung hinzufügen zum Erstellen einer FastCGI-Anwendung aufgefordert werden, klicken Sie auf Ja.

    Screenshot des Dialogfelds

    Hinweis

    Dadurch wird automatisch eine FastCGI-Anwendung für die soeben erstellte Handlerzuordnung erstellt. Wenn Sie Nein auswählen, können Sie später manuell eine FastCGI-Anwendung erstellen.

Erstellen einer FastCGI-Anwendung für PHP

Hinweis

Damit das folgende Verfahren funktioniert, müssen Sie bereits Binärdateien installiert haben, die den von Ihnen angegebenen Dateipfad oder die von Ihnen angegebene Dateinamenerweiterung ausführen. In diesem Beispiel wird eine PHP-Implementierung verwendet, die unter www.php.net verfügbar ist.

Hinweis

Durch Hinzufügen einer FastCGI-Anwendung wird nicht automatisch eine Handlerzuordnung hinzugefügt. Führen Sie hierzu die Schritte aus, die in diesem Artikel im Abschnitt Erstellen einer globalen FastCGI-Handlerzuordnung für PHP beschrieben sind.

  1. Öffnen Sie Internetinformationsdienste-Manager (IIS-Manager):

    • Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows 8 oder Windows 8.1 verwenden:

      • Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf "Systemsteuerung".
      • Klicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Vista oder Windows 7 verwenden:

      • Klicken Sie auf der Taskleiste auf "Start" und dann auf "Systemsteuerung".
      • Doppelklicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
  2. Klicken Sie im Bereich Verbindungen auf den Servernamen, für den Sie FastCGI-Einstellungen konfigurieren möchten.

  3. Doppelklicken Sie im Bereich Start auf FastCGI-Einstellungen.

    Screenshot der Serverstartseite. Die schnell C G I Einstellungen ist hervorgehoben.

  4. Klicken Sie im Bereich Aktionen auf Anwendung hinzufügen.

    Screenshot der Seite

  5. Geben Sie im Dialogfeld FastCGI-Anwendung hinzufügen folgende Informationen ein:

    • Geben Sie den Pfad zur Skript-Engine in das Feld Vollständiger Pfad ein. Beispiel: „C:\PHP\php-cgi.exe“.

    • Geben Sie die maximale Anzahl von Anforderungen für die FastCGI-Anwendung ein.

      Hinweis

      Für PHP muss dieser Wert kleiner oder gleich der maximalen Anzahl von Anforderungen für die PHP-Umgebung sein, die mithilfe der Umgebungsvariablen „PHP_FCGI_MAX_REQUESTS“ konfiguriert wird.

      Screenshot des Dialogfelds

  6. Klicken Sie neben EnvironmentVariables auf die Auslassungspunkte (...), um den Auflistungs-Editor für Umgebungsvariablen zu öffnen.

  7. Klicken Sie im Dialogfeld Auflistungs-Editor – EnvironmentVariables auf Hinzufügen.

    Screenshot des Dialogfelds

  8. Geben Sie die folgenden Informationen ein, und klicken Sie dann auf OK.

    • Geben Sie „PHP_FCGI_MAX_REQUESTS“ als Name ein.

    • Geben Sie „10.000“ als Wert ein.

      Screenshot des Dialogfelds

  9. Klicken Sie auf OK, um das Dialogfeld FastCGI-Anwendung hinzufügen zu schließen.

Hinzufügen einer FastCGI-Umgebungsvariablen für PHP

Hinweis

Damit das folgende Verfahren funktioniert, müssen Sie bereits Binärdateien installiert haben, die den von Ihnen angegebenen Dateipfad oder die von Ihnen angegebene Dateinamenerweiterung ausführen. In diesem Beispiel wird eine PHP-Implementierung verwendet, die unter www.php.net verfügbar ist.

  1. Öffnen Sie Internetinformationsdienste-Manager (IIS-Manager):

    • Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows 8 oder Windows 8.1 verwenden:

      • Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf "Systemsteuerung".
      • Klicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Vista oder Windows 7 verwenden:

      • Klicken Sie auf der Taskleiste auf "Start" und dann auf "Systemsteuerung".
      • Doppelklicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
  2. Klicken Sie im Bereich Verbindungen auf den Servernamen, für den Sie FastCGI-Einstellungen konfigurieren möchten.

  3. Doppelklicken Sie im Bereich Start auf FastCGI-Einstellungen.

    Screenshot der Serverstartseite in I I S Manager. Das THe-Symbol für fast C G I Einstellungen wird hervorgehoben.

  4. Markieren Sie die PHP-Anwendung im Bereich FastCGI-Einstellungen, und klicken Sie dann im Bereich Aktionen auf Bearbeiten.

    Screenshot der Seite

  5. Klicken Sie im Dialogfeld FastCGI-Anwendung bearbeiten neben EnvironmentVariables auf die Auslassungspunkte (...), um den Auflistungs-Editor für Umgebungsvariablen zu öffnen.

    Screenshot des Dialogfelds

  6. Klicken Sie im Dialogfeld Auflistungs-Editor – EnvironmentVariables auf Hinzufügen.

    Screenshot des Bereichs

  7. Geben Sie die folgenden Informationen ein, und klicken Sie dann auf OK.

    • Geben Sie „PHP_FCGI_MAX_REQUESTS“ als Name ein.

    • Geben Sie „10.000“ als Wert ein.

      Screenshot des Bereichs

  8. Klicken Sie auf OK, um das Dialogfeld FastCGI-Anwendung hinzufügen zu schließen.

Konfiguration

Das <application>-Element kann auf der Serverebene in der Datei „ApplicationHost.config“ oder auf der Site-, Anwendungs- oder Verzeichnisebene in einer Datei vom Typ „Web.config“ konfiguriert werden.

Attribute

Attribut Beschreibung
activityTimeout Optionales uint-Attribut.

Gibt an, wie viele Sekunden die Verarbeitung eines FastCGI-Prozesses maximal dauern darf. Zulässig sind Werte zwischen „10“ und „3.600“.

Der Standardwert in IIS 7.0 ist 30. Der Standardwert für IIS 7.5 ist 70.
arguments Optionales Zeichenfolgeattribut.

Gibt die Befehlszeilenargumente für den FastCGI-Prozess an.
flushNamedPipe Optionales Boolean -Attribut.

Gibt an, ob Named Pipes am Ende jeder Anforderung geleert werden. Diese Eigenschaft wird nur angewendet, wenn das Protokoll für Named Pipes verwendet wird.

Der Standardwert ist false.
fullPath Erforderliches Zeichenfolgenattribut.

Gibt den vollständigen Pfad des FastCGI-Prozesses an.
idleTimeout Optionales uint-Attribut.

Gibt an, wie viele Sekunden sich ein FastCGI-Prozess im Leerlauf befinden darf, bevor er heruntergefahren wird. Zulässig sind Werte zwischen „10“ und „604.800“ (einschließlich).

Der Standardwert ist 300.
instanceMaxRequests Optionales uint-Attribut.

Gibt die maximale Anzahl von Anforderungen an, die von jedem FastCGI-Arbeitsprozess verarbeitet werden können, bevor er neu gestartet wird. Zulässig sind Werte zwischen „1“ und „10.000.000“ (einschließlich).

Der Standardwert ist 200.
maxInstances Optionales uint-Attribut.

Gibt die maximale Anzahl von FastCGI-Arbeitsprozessen an, die in einem Anwendungspool gestartet werden können. Zulässig sind Werte zwischen „0“ und „10.000“ (einschließlich).

Der Standardwert ist 0.
monitorChangesTo Optionales string-Attribut.

Gibt den vollständigen Pfad zu einer Datei an, die auf Änderungen überwacht werden soll. Wenn Änderungen an der Datei erkannt werden, beendet IIS die im fullPath-Attribut angegebene FastCGI-Anwendung und startet sie neu.

Hinweis: Dieses Attribut wurde in IIS 7.5 hinzugefügt.

Es ist kein Standardwert vorhanden.
protocol Optionales enum-Attribut.

Gibt den Transportmechanismus an, der für die Kommunikation mit dem FastCGI-Prozess verwendet wird.

Das protocol-Attribut kann einen der folgenden Werte haben:
Wert Beschreibung
NamedPipe Für die Kommunikation mit dem FastCGI-Arbeitsprozess wird das Named-Pipe-Protokoll verwendet.
Tcp Für die Kommunikation mit dem FastCGI-Arbeitsprozess wird das TCP-Protokoll verwendet.
Der Standardwert ist NamedPipe.
queueLength Optionales uint-Attribut.

Gibt die maximale Anzahl von Anforderungen an, die für einen FastCGI-Prozesspool in die Warteschlange gestellt werden können. Zulässig sind Werte zwischen „1“ und „10.000.000“ (einschließlich).

Der Standardwert ist 1000.
requestTimeout Optionales uint-Attribut.

Gibt an, wie viele Sekunden ein FastCGI-Prozess maximal dauern darf. Zulässig sind Werte zwischen „10“ und „604.800“ (einschließlich).

Der Standardwert ist 90.
signalBeforeTerminateSeconds Optionales uint-Attribut.

Gibt an, wie lange IIS wartet, nachdem IIS einer FastCGI-Anwendung signalisiert hat, dass sie heruntergefahren werden muss. Wenn dieses Attribut auf einen Wert größer Null festgelegt ist, erstellt IIS ein vererbbares Ereignis und übergibt den Handlewert für das Ereignis als Wert der _FCGI_SHUTDOWN_EVENT_-Umgebungsvariablen an einen FastCGI-Prozess.

Hinweis: Dieses Attribut wurde in IIS 7.5 hinzugefügt.

Der Standardwert ist 0.
stderrMode Optionales enum-Attribut.

Gibt das Verhalten an, das IIS für Fehler verwendet, die FastCGI-Anwendungen im STDERR-Stream zurückgeben.

Hinweis: Dieses Attribut wurde in IIS 7.5 hinzugefügt.

Das stderrMode-Attribut kann einen der folgenden Werte haben:
Wert Beschreibung
ReturnStdErrIn500 Gibt an, dass IIS einen HTTP 500-Fehler zurückgibt und den Inhalt im STDERR-Stream auf dem Client anzeigt. (Hinweis: Dies entspricht dem IIS 7.0-Verhalten.)

Der numerische Wert ist 0.
ReturnGeneric500 Gibt an, dass IIS einen generischen HTTP 500-Fehler an den Client zurückgibt. Dadurch wird verhindert, dass der Inhalt im STDERR-Stream an den Client zurückgegeben wird.

Der numerische Wert ist 1.
IgnoreAndReturn200 Gibt an, dass IIS den Text im STDERR-Stream ignoriert und einen HTTP 200-Fehler sowie den Inhalt des STDOUT-Streams an den Client zurückgibt.

Der numerische Wert ist 2.
TerminateProcess Gibt an, dass IIS den FastCGI-Prozess beendet und einen generischen HTTP 500-Fehler an den Client zurückgibt.

Der numerische Wert ist 3.
Der Standardwert ist ReturnStdErrIn500.

Untergeordnete Elemente

Element Beschreibung
environmentVariables Optionales Element.

Gibt eine Sammlung von Umgebungsvariablen an, die IIS an die FastCGI-Anwendung übergibt.

Konfigurationsbeispiel

Im folgenden Konfigurationsbeispiel wird eine FastCGI-Anwendung für PHP hinzugefügt, das Attribut instanceMaxRequests wird auf „10.000“ festgelegt, und die Umgebungsvariable PHP_FCGI_MAX_REQUESTS wird auf „10.000“ festgelegt.

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

Hinweis

Für PHP muss der Wert der Umgebungsvariablen PHP_FCGI_MAX_REQUESTS eine Zahl sein, die kleiner oder gleich dem Wert ist, der durch das instanceMaxRequests-Attribut des FastCGI-<application>-Elements angegeben ist.

Im folgenden Konfigurationsbeispiel wird eine globale FastCGI-Handlerzuordnung für PHP-Dateien zu IIS hinzugefügt und der vollständige Pfad zu einer ausführbaren FastCGI-Datei angegeben.

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

Hinweis

FastCGI-Einstellungen können pro Site konfiguriert werden. Hierzu werden eine speziell formatierte FastCGI-Anwendung und Handlerzuordnungen verwendet, die unterschieden werden, indem die Attribute fullPath und arguments für ein <application>-Element mit dem entsprechenden scriptProcessor-Attribut in der <handlers>-Zuordnung für den FastCGI-Prozess abgeglichen werden. Um diese Zuordnungen zu erstellen, müssen die Einstellungen in den Attributen fullPath und arguments für ein <application>-Element dem scriptProcessor-Attribut in der <handlers>-Zuordnung für den FastCGI-Prozess hinzugefügt und durch einen senkrechten Strich („|“) getrennt werden. Diese Kombination fungiert als eindeutiger Schlüssel für jede FastCGI-Anwendung. Der folgende Konfigurationsauszug zeigt z. B. zwei exemplarische Elemente vom Typ „<fastCgi>“/„<application>“ und die entsprechenden Zuordnungen vom Typ „<handlers>“ für zwei websitespezifische PHP-Handler:

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

Beispielcode

In den folgenden Codebeispielen wird eine FastCGI-Anwendung für PHP hinzugefügt, das Attribut instanceMaxRequests wird auf „10.000“ festgelegt, und die Umgebungsvariable PHP_FCGI_MAX_REQUESTS wird auf „10.000“ festgelegt. In den Beispielen wird auch jeweils eine globale FastCGI-Handlerzuordnung für PHP-Dateien zu IIS hinzugefügt und der vollständige Pfad zu einer ausführbaren FastCGI-Datei angegeben.

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

Hinweis

Sie müssen unbedingt den Commitparameterapphost festlegen, wenn Sie AppCmd.exe verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei ApplicationHost.config festgelegt.

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