次の方法で共有


環境変数: FastCGI の <application> 要素の <environmentVariables>

FastCGI の <application> 要素の <environmentVariables> 要素は、インターネット インフォメーション サービス (IIS) 7 が起動時に FastCGI プロセスに渡す環境変数の一覧を指定します。 <environmentVariables> 要素には、各環境変数の個々の名前と値のペアを定義する <environmentVariable> 要素のコレクションが含まれます。

IIS 7 にインストールされる各 FastCGI アプリケーションでは、環境変数による FastCGI アプリケーションの動作の構成が可能または必要である場合があります。 たとえば、ある FastCGI アプリケーションではアプリケーションの構成ファイルが配置される場所を指定する環境変数が必要であるのに対し、別の FastCGI アプリケーションではそのリサイクルが必要になる要求の数を指定する環境変数が必要である、といった場合があります。

互換性

バージョン メモ
IIS 10.0 <environmentVariables> 要素は、IIS 10.0 では変更されませんでした。
IIS 8.5 <environmentVariables> 要素は、IIS 8.5 では変更されませんでした。
IIS 8.0 <environmentVariables> 要素は、IIS 8.0 では変更されませんでした。
IIS 7.5 <environmentVariables> 要素は、IIS 7.5 では変更されませんでした。
IIS 7.0 FastCGI の <application> 要素の <environmentVariables> 要素は IIS 7.0 で導入されました。
IIS 6.0 該当なし

段取り

FastCGI 環境を使うには、最初に CGI 役割サービスをインストールする必要があります。 インストール プロセスでは、<globalModules> 要素と <modules> 要素の両方に Common Gateway Interface (CGI) 役割サービスが登録されます。 FastCGI 環境をインストールするために他の手順を実行する必要はありません。

Windows Server 2012 または Windows Server 2012 R2

  1. タスク バーで [サーバー マネージャー]をクリックします。
  2. [サーバー マネージャー] で、[管理] メニューを選択し、[役割と機能の追加] を選択します。
  3. [役割と機能の追加] ウィザードで、[次へ] をクリックします。 インストールの種類を選択し、[次へ] をクリックします。 対象サーバーを選択し、[次へ] をクリックします。
  4. [サーバーの役割] ページで、[Web サーバー (IIS)][Web サーバー][アプリケーション開発] の順に展開して、[CGI] を選びます。 次へ をクリックします。
    [C G I チェック ボックスが強調表示されている [サーバーロール] ページを示すスクリーンショット。
  5. [機能の選択] ページで [次へ] をクリックします。
  6. [インストール オプションの確認] ページで、[インストール] をクリックします。
  7. [結果] ページで、 [閉じる]をクリックします。

Windows 8 または Windows 8.1

  1. [スタート] 画面で、ポインターを左下隅まで移動し、[スタート] ボタンを右クリックし、[コントロール パネル] をクリックします。
  2. [コントロール パネル][プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。
  3. [インターネット インフォメーション サービス][World Wide Web サービス][アプリケーション開発機能] の順に展開して、[CGI] を選択します。
    C G I チェック ボックスが強調表示されているインターネット インフォメーション サービスを示すスクリーンショット。
  4. OK をクリックします。
  5. 閉じるをクリックします。

Windows Server 2008 または Windows Server 2008 R2

  1. タスク バーで [スタート] をクリックし、[管理ツール] をポイントして、[サーバー マネージャ] をクリックします。
  2. [サーバー マネージャ] 階層ウィンドウで [役割] を展開し、[Web サーバー (IIS)] をクリックします。
  3. [Web サーバー (IIS)] ウィンドウで、[役割サービス] セクションまでスクロールし、[役割サービスの追加] をクリックします。
  4. 役割サービスの追加ウィザード[役割サービスの選択] ページで、[CGI] を選択して、[次へ] をクリックします。
    C G I チェック ボックスが強調表示されている [ロール サービスの選択] ページを示すスクリーンショット。
  5. [インストール オプションの確認] ページで、[インストール] をクリックします。
  6. [結果] ページで、 [閉じる]をクリックします。

Windows Vista または Windows 7

  1. タスク バーで、[スタート][コントロール パネル] の順にクリックします。
  2. [コントロール パネル][プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。
  3. [インターネット インフォメーション サービス] を展開し、[CGI] を選択して、[OK] をクリックします。
    [C G I チェック ボックスが強調表示されているインターネット インフォメーション サービス ページを示すスクリーンショット。

操作方法

IIS 7.0 ユーザーの場合の注意: このセクションの一部の手順では、FastCGI 設定用のユーザー インターフェイスを含む Microsoft Administration Pack for IIS 7.0 のインストールが必要な場合があります。 Microsoft Administration Pack for IIS 7.0 をインストールするには、次の URL を参照してください。

PHP 用のグローバル FastCGI ハンドラー マッピングを作成する方法

Note

次の手順を実行するには、指定するファイル パスまたはファイル名拡張子を実行するバイナリが既にインストールされている必要があります。 この例では、www.php.net から利用できる PHP の実装を使います。

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ペインで、FastCGI ハンドラー マッピングを構成するサーバー名をクリックします。

  3. [ホーム] ウィンドウで、[ハンドラー マッピング] をダブルクリックします。
    [ハンドラー マッピング] フォルダーが強調表示されている [ホーム] ウィンドウを示すスクリーンショット。

  4. [アクション] ペインで、 [モジュール マップの追加]をクリックします。
    [名前] フィールドと [パス] フィールドを含む [操作] ペインを示すスクリーンショット。

  5. 次の情報を入力してください。

    • [要求パス] テキスト ボックスにファイル名拡張子を入力します。 たとえば、"*.php" などです。
    • [モジュール] ドロップダウン リストで [FastCgiModule] をクリックします。
    • [実行可能ファイル] ボックスにスクリプト エンジンへのパスを入力します。 たとえば、"C:\PHP\php-cgi.exe" などです。
    • [名前] ボックスに、ハンドラー マッピングの一意の名前を入力します。 たとえば、"PHP-FastCGI" などです。

    [Add Module Mapping]\(モジュール マッピングの追加\) ウィンドウと [要求パス] フィールドと [モジュール] フィールドを示すスクリーンショット。

    • [要求の制限] をクリックします。
    • [要求がマップされている場合にのみハンドラーを呼び出す] をオンにします。
    • [ファイルまたはフォルダー] オプションをクリックして選びます。
    • OK をクリックします。
      [ファイル] または [フォルダー] ラジオ ボタンが選択されている [要求の制限] ウィンドウを示すスクリーンショット。
  6. OK をクリックします。

  7. [モジュール マッピングの追加] ダイアログ ボックスで FastCGI アプリケーションを作成するように求められたら、[はい] をクリックします。
    Fast C G I アプリケーションを作成するための [モジュール マッピングの追加] プロンプトを示すスクリーンショット。

    Note

    これにより、先に作成したハンドラー マッピング用の FastCGI アプリケーションが自動的に作成されます。 [いいえ] を選んだ場合は、後で FastCGI アプリケーションを手動で作成できます。

PHP 用 FastCGI アプリケーションを作成する方法

Note

次の手順を実行するには、指定するファイル パスまたはファイル名拡張子を実行するバイナリが既にインストールされている必要があります。 この例では、www.php.net から利用できる PHP の実装を使います。

Note

FastCGI アプリケーションを追加しても、ハンドラー マッピングは自動的に追加されません。 そのためには、この記事の「PHP 用のグローバル FastCGI ハンドラー マッピングを作成する方法」セクションの手順のようにする必要があります。

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、FastCGI の設定を構成するサーバー名をクリックします。

  3. [ホーム] ウィンドウで、[FastCGI の設定] をダブルクリックします。
    Fast C G I 設定 アイコンが強調表示されている [ホーム] ウィンドウを示すスクリーンショット。

  4. [操作] ウィンドウで [アプリケーションの追加] をクリックします。
    スクリーンショットは、アプリケーションを追加する [操作] ウィンドウを示しています。

  5. [FastCGI アプリケーションの追加] ダイアログ ボックスで、次の情報を入力します。

    • [完全なパス] ボックスにスクリプト エンジンへのパスを入力します。 たとえば、"C:\PHP\php-cgi.exe" などです。

    • FastCGI アプリケーションに対する要求の最大数を入力します。

      Note

      PHP の場合、この数は、PHP_FCGI_MAX_REQUESTS 環境変数を使って構成される PHP 環境に対する要求の最大数以下である必要があります。

    [完全なパス] フィールドと [引数] フィールドが表示された [Add Fast C G I Application]\(高速 C G I アプリケーションの追加\) ウィンドウを示すスクリーンショット。

  6. EnvironmentVariables の横にある省略記号 ([...]) をクリックして、環境変数コレクション エディターを開きます。

  7. [EnvironmentVariables コレクション エディター] ダイアログ ボックスで、[追加] をクリックします。
    メンバーを追加する [環境変数コレクション エディター] ウィンドウを示すスクリーンショット。

  8. 次の情報を入力して、[OK] をクリックします。

    • [名前] に「PHP_FCGI_MAX_REQUESTS」と入力します。
    • [値] に「10000」と入力します。

    [名前] が強調表示されている [環境変数コレクション エディター] ダイアログ ボックスを示すスクリーンショット。

  9. [OK] をクリックして、[FastCGI アプリケーションの追加] ダイアログ ボックスを閉じます。

PHP 用の FastCGI 環境変数を追加する方法

Note

次の手順を実行するには、指定するファイル パスまたはファイル名拡張子を実行するバイナリが既にインストールされている必要があります。 この例では、www.php.net から利用できる PHP の実装を使います。

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、FastCGI の設定を構成するサーバー名をクリックします。

  3. [ホーム] ウィンドウで、[FastCGI の設定] をダブルクリックします。
    Fast C G I 設定 フォルダーが強調表示されている [ホーム] ウィンドウを示すスクリーンショット。

  4. [FastCGI の設定] ウィンドウで PHP アプリケーションを強調表示にした後、[操作] ウィンドウで [編集] をクリックします。
    スクリーンショットは、[完全パス名] が強調表示されている [Fast C G I 設定] ページを示しています。

  5. [FastCGI アプリケーションの編集] ダイアログ ボックスで、EnvironmentVariables の横にある省略記号 ([...]) をクリックして、環境変数コレクション エディターを開きます。
    スクリーンショットは、[完全なパス] フィールドと [引数] フィールドを含む [高速 C G I アプリケーションの編集] ダイアログ ボックスを示しています。

  6. [EnvironmentVariables コレクション エディター] ダイアログ ボックスで、[追加] をクリックします。
    メンバーを追加するための [環境変数コレクション エディター] ダイアログ ボックスを示すスクリーンショット。

  7. 次の情報を入力して、[OK] をクリックします。

    • [名前] に「PHP_FCGI_MAX_REQUESTS」と入力します。
    • [値] に「10000」と入力します。

    環境変数の名前が強調表示されている [環境変数コレクション エディター] ダイアログ ボックスを示すスクリーンショット。

  8. [OK] をクリックして、[FastCGI アプリケーションの追加] ダイアログ ボックスを閉じます。

構成

属性

なし。

子要素

要素 説明
environmentVariable 省略可能な要素です。

環境変数のコレクションに環境変数を追加します。

構成サンプル

次の構成サンプルでは、PHP 用の FastCGI アプリケーションを追加し、instanceMaxRequests 属性を "10000" に設定して、PHP_FCGI_MAX_REQUESTS 環境変数を "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>

Note

PHP の場合、PHP_FCGI_MAX_REQUESTS 環境変数の値は、FastCGI の <application> 要素の instanceMaxRequests 属性で指定されている値以下の値である必要があります。

次の構成サンプルでは、PHP ファイルのグローバル FastCGI ハンドラー マッピングを IIS に追加し、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>

Note

FastCGI の設定は、特別な形式に設定された FastCGI アプリケーションとハンドラー マッピングを使って、サイトごとに構成できます。これは、<application> 要素の fullPatharguments 属性を、FastCGI プロセスの <handlers> マッピングでの対応する scriptProcessor 属性と照合して区別されます。 これらのマッピングを作成するには、<application> 要素の fullPatharguments 属性の設定を、FastCGI プロセスの <handlers> マッピングの scriptProcessor 属性に、パイプ "|" 文字で区切って追加する必要があります。 この組み合わせは、各 FastCGI アプリケーションの一意キーとして機能します。 たとえば、次に示す構成抜粋は、<fastCgi>/<application> 要素の 2 つの例と、それに対応する 2 つのサイト固有 PHP ハンドラーの <handlers> マッピングです。

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

サンプル コード

次のコード サンプルでは、PHP 用の FastCGI アプリケーションを追加し、instanceMaxRequests 属性を "10000" に設定して、PHP_FCGI_MAX_REQUESTS 環境変数を "10000" に設定します。また、各サンプルでは、PHP ファイルのグローバル FastCGI ハンドラー マッピングを IIS に追加し、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

Note

AppCmd.exe を使用してこれらの設定を構成するときは、commit パラメーターを必ず apphost に設定する必要があります。 これで、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()