FastCGI 應用程式應用程式<>
概觀
FastCGI 元素包含特定 FastCGI <application>
進程集區的組態設定。 使用FastCGI時,IIS會使用 元素 maxInstances屬性<application>
中的值,以判斷可在進程集區中執行的FastCGI進程數目。
最簡單的 FastCGI 應用程式集區定義會要求您在 元素中包含 <application>
fullPath 屬性,以定義要用於特定應用程式架構的二進位檔。 針對 PHP 架構,將 fullPath 屬性設定為 PHP 二進位檔的目錄和檔名。
其他屬性是選擇性的,可讓您設定一些其他參數。 其中包括 FastCGI 背景工作進程在回收之前可以處理的要求數目上限、應用程式集區的背景工作進程數目上限,以及 FastCGI 要求可能需要的時間上限。
注意
若要使用 FastCGI 來處理要求,您必須先將路徑和特定擴展名對應至 FastCGI 模組,並將目標 FastCGI 進程指定為腳本處理器。
IIS 7.5 的新功能
IIS 7.5 已將下列屬性新增至 <fastCgi>
/<application>
元素:
- monitorChangesTo 屬性可讓您指定檔案來監視可能會影響 FastCGI 應用程式行為的變更。 例如,如果您使用 PHP 架構,您可以設定 IIS 來監視 PHP。INI 檔案的變更方式是指定 monitorChangesTo 屬性中檔案的完整路徑。
- stderrMode 屬性會指定 IIS 7 如何處理透過 STDERR 資料流從 FastCGI 應用程式傳回的錯誤。
- signalBeforeTerminateSeconds 屬性可讓您將 IIS 設定為在 IIS 向 FastCGI 應用程式發出需要關閉的 FastCGI 應用程式發出訊號之後,等候指定的一段時間。 這可讓 FastCGI 應用程式在 IIS 終止進程之前清除任何設定。
相容性
版本 | 備註 |
---|---|
IIS 10.0 | 未 <application> 在 IIS 10.0 中修改專案。 |
IIS 8.5 | 專案 <application> 未在 IIS 8.5 中修改。 |
IIS 8.0 | 屬性的 maxInstances 預設值已從 4 變更為 0 IIS 8.0 中的 。 |
IIS 7.5 | 集合 <application> 的 <fastCgi> 元素已在 IIS 7.5 中使用 monitorChangesTo、 stderrMode 和 signalBeforeTerminateSeconds 屬性更新。 |
IIS 7.0 | 集合 <application> 的 <fastCgi> 元素是在 IIS 7.0 中引進的。 |
IIS 6.0 | N/A |
設定
若要使用 FastCGI 環境,您必須先安裝 CGI 角色服務。 安裝程式會在和 <modules>
元素中<globalModules>
註冊通用閘道介面 (CGI) 角色服務。 您不需要執行任何其他步驟來安裝 FastCGI 環境。
Windows Server 2012 或 Windows Server 2012 R2
- 在工作列上,按一下 [伺服器管理員] 。
- 在 伺服器管理員 中,按兩下 [管理] 功能表,然後按下 [新增角色和功能]。
- 在 [ 新增角色和功能 精靈] 中,按 [ 下一步]。 選取安裝類型,然後按 [ 下一步]。 選取目的地伺服器,然後按 [下一步]。
- 在 [ 伺服器角色] 頁面上,依序展開 [網頁伺服器] 和 [Web 伺服器]、[ 應用程式開發],然後選取 [ CGI]。 按一下 [下一步] 。
- 在 [選取功能] 頁面上,按一下 [下一步]。
- 在 [確認安裝選項] 頁面上,按一下 [安裝] 。
- 在 [結果] 頁面上,按一下 [關閉] 。
Windows 8 或 Windows 8.1
- 在 [開始] 畫面上,將指標一路移至左下角,以滑鼠右鍵按兩下 [開始] 按鈕,然後按兩下 [控制台]。
- 在 控制台 中,按兩下 [程式和功能],然後按兩下 [開啟或關閉 Windows 功能]。
- 依序展開 [網際網路資訊服務]、[萬維網服務]、[應用程式開發功能],然後選取 [CGI]。
- 按一下 [確定]。
- 按一下 [關閉] 。
Windows Server 2008 或 Windows Server 2008 R2
- 在任務欄上,按兩下 [開始],指向 [管理員 工具],然後按兩下 [伺服器管理員]。
- 在 [伺服器管理員 階層] 窗格中,展開 [角色],然後按兩下 [Web 伺服器] [IIS]。
- 在 [Web 伺服器 (IIS)] 窗格中,捲動至 [角色服務] 區段,然後按兩下 [新增角色服務]。
- 在 [新增角色服務精靈] 的 [選取角色服務] 頁面上,選取 [CGI],然後按 [下一步]。
- 在 [確認安裝選項] 頁面上,按一下 [安裝] 。
- 在 [結果] 頁面上,按一下 [關閉] 。
Windows Vista 或 Windows 7
- 在任務欄上,按兩下 [開始],然後按兩下 [控制台]。
- 在 控制台 中,按兩下 [程式和功能],然後按兩下 [開啟或關閉 Windows 功能]。
- 展開 [網際網路資訊服務],然後選取 [CGI],然後按兩下 [確定]。
作法
IIS 7.0 使用者的注意事項:本節中的某些步驟可能需要您安裝適用於 IIS 7.0 的 Microsoft 管理員 istration Pack,其中包含 FastCGI 設定的使用者介面。 若要安裝適用於 IIS 7.0 的 Microsoft 管理員 istration Pack,請參閱下列 URL:
如何建立 PHP 的全域 FastCGI 處理程序對應
注意
在下列程式正常運作之前,您必須先安裝二進位檔,才能執行您指定的檔案路徑或擴展名。 此範例使用可從 www.php.net 取得 的 PHP 實作。
開啟 網際網路資訊服務 (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] 管理員。
在 [連線 ions] 窗格中,按下您要設定 FastCGI 處理程式對應的伺服器名稱。
在 [ 首頁 ] 窗格中,按兩下 [ 處理程序對應]。
在 [ 動作] 窗格中,按兩下 [ 新增模組對應]
輸入下列資訊:
在 [要求路徑 ] 文本框中輸入擴展名。 例如,“*.php”。
按兩下 [模組] 下拉式清單中的 [FastCgiModule]。
在 [ 可執行檔 ] 方塊中輸入腳本引擎的路徑。 例如,“C:\PHP\php-cgi.exe”。
在 [ 名稱 ] 方塊中輸入處理程序對應的唯一名稱。 例如,“PHP-FastCGI”。
按兩下 [ 要求限制]
只有在要求對應至 時,才選取 [叫用處理程式]。
按下即可選取 [ 檔案] 或 [資料夾] 選項。
按一下 [確定]。
按一下 [確定]。
如果系統提示您在 [ 新增模組對應 ] 對話框中建立 FastCGI 應用程式,請按兩下 [ 是]。
注意
這會自動為您剛才建立的處理程序對應建立FastCGI應用程式。 如果您選擇 [ 否],您可以稍後手動建立FastCGI應用程式。
如何建立適用於 PHP 的 FastCGI 應用程式
注意
在下列程式正常運作之前,您必須先安裝二進位檔,才能執行您指定的檔案路徑或擴展名。 此範例使用可從 www.php.net 取得 的 PHP 實作。
注意
新增 FastCGI 應用程式不會自動新增處理程式對應。 若要這樣做,請遵循本文中如何建立 PHP 的全域 FastCGI 處理程式對應一節中的步驟。
開啟 網際網路資訊服務 (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] 管理員。
在 [連線 ions] 窗格中,按下您要設定 FastCGI 設定的伺服器名稱。
在 [首頁] 窗格中,按兩下 [FastCGI 設定]。
在 [ 動作] 窗格中,按兩下 [ 新增應用程式]。
在 [ 新增 FastCGI 應用程式 ] 對話框中,輸入下列資訊:
在 [完整路徑] 方塊中輸入腳本引擎的路徑。 例如,“C:\PHP\php-cgi.exe”。
輸入 FastCGI 應用程式的要求數目上限。
注意
針對 PHP,此數目必須小於或等於 PHP 環境的要求數目上限,這是使用 PHP_FCGI_MAX_REQUESTS 環境變數所設定。
按兩下 EnvironmentVariables 旁的省略號 (...),以開啟環境變數集合編輯器。
在 [ EnvironmentVariables 集合編輯器] 對話框中,按兩下 [ 新增]。
輸入下列資訊,然後按兩下列資訊,然後按
針對 [ 名稱] 輸入 「PHP_FCGI_MAX_REQUESTS」。
針對 [值] 輸入 “10000”。
按兩下 [確定 ] 關閉 [ 新增 FastCGI 應用程式 ] 對話框。
如何新增適用於 PHP 的 FastCGI 環境變數
注意
在下列程式正常運作之前,您必須先安裝二進位檔,才能執行您指定的檔案路徑或擴展名。 此範例使用可從 www.php.net 取得 的 PHP 實作。
開啟 網際網路資訊服務 (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] 管理員。
在 [連線 ions] 窗格中,按下您要設定 FastCGI 設定的伺服器名稱。
在 [首頁] 窗格中,按兩下FastCGI 設定。
反白顯示 FastCGI 設定 窗格中的 PHP 應用程式,然後按兩下 [動作] 窗格中的 [編輯]。
在 [編輯 FastCGI 應用程式] 對話框中,按兩下 EnvironmentVariables 旁的省略號 (...), 以開啟環境變數集合編輯器。
在 [ EnvironmentVariables 集合編輯器] 對話框中,按兩下 [ 新增]。
輸入下列資訊,然後按兩下列資訊,然後按
針對 [ 名稱] 輸入 「PHP_FCGI_MAX_REQUESTS」。
針對 [值] 輸入 “10000”。
按兩下 [確定 ] 關閉 [ 新增 FastCGI 應用程式 ] 對話框。
組態
您可以在 <application>
ApplicationHost.config 檔案中的伺服器層級或 Web.config 檔案的月臺層級、應用層級或目錄層級設定 專案。
屬性
屬性 | 描述 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
activityTimeout |
選擇性 uint 屬性。 指定 FastCGI 進程可能需要處理的最大時間,以秒為單位。 可接受的值介於 10 到 3600 的範圍內。 IIS 7.0 中的預設值為 30 ;IIS 7.5 的預設值為 70 。 |
||||||||||
arguments |
選擇性字串屬性。 指定 FastCGI 程式的命令行自變數。 |
||||||||||
flushNamedPipe |
選擇性 布爾 值屬性。 指定命名管道是否在每個要求結尾排清。 此屬性僅適用於使用具名管道通訊協定時。 預設值是 false 。 |
||||||||||
fullPath |
必要的字串屬性。 指定 FastCGI 程式的完整路徑。 |
||||||||||
idleTimeout |
選擇性 uint 屬性。 指定在關閉進程之前,FastCGI 進程可以閑置的時間上限,以秒為單位。 可接受的值介於 10 到 604800 的範圍內。 預設值是 300 。 |
||||||||||
instanceMaxRequests |
選擇性 uint 屬性。 指定每個 FastCGI 背景工作進程在回收之前可以處理的要求數目上限。 可接受的值介於 1 到 10000000 的範圍內。 預設值是 200 。 |
||||||||||
maxInstances |
選擇性 uint 屬性。 指定可在應用程式集區中啟動的FastCGI背景工作進程數目上限。 可接受的值介於 0 到 10000 的範圍內。 預設值是 0 。 |
||||||||||
monitorChangesTo |
選項字串屬性。 指定要監視變更之檔案的完整路徑。 偵測到檔案的變更時,IIS 將會終止並重新啟動 屬性中指定的 fullPath FastCGI應用程式。注意: 這個屬性已在 IIS 7.5 中新增。 沒有預設值。 |
||||||||||
protocol |
選擇性列舉屬性。 指定用來與 FastCGI 進程通訊的傳輸機制。 通訊 協定 屬性可以是下列其中一個可能的值:
NamedPipe 。 |
||||||||||
queueLength |
選擇性 uint 屬性。 指定可以排入 FastCGI 進程集區佇列的要求數目上限。 可接受的值介於 1 到 10000000 的範圍內。 預設值是 1000 。 |
||||||||||
requestTimeout |
選擇性 uint 屬性。 指定 FastCGI 進程要求可能需要的時間上限,以秒為單位。 可接受的值介於 10 到 604800 的範圍內。 預設值是 90 。 |
||||||||||
signalBeforeTerminateSeconds |
選擇性 uint 屬性。 指定 IIS 在 IIS 發出 FastCGI 應用程式需要關機的訊號之後等候的時間量。 當此屬性設定為大於零的值時,IIS 會建立可繼承的事件,並將事件的句柄值傳遞至FastCGI進程做為環境變數的值 _FCGI_SHUTDOWN_EVENT_ 。注意: 這個屬性已在 IIS 7.5 中新增。 預設值是 0 。 |
||||||||||
stderrMode |
選擇性列舉屬性。 指定 IIS 將用於 FastCGI 應用程式在 STDERR 數據流中傳回的錯誤行為。 注意: 這個屬性已在 IIS 7.5 中新增。 stderrMode 屬性可以是下列其中一個可能的值:
ReturnStdErrIn500 。 |
子元素
元素 | 描述 |
---|---|
environmentVariables |
選擇性項目。 指定 IIS 將傳遞至 FastCGI 應用程式的環境變數集合。 |
組態範例
下列組態範例會新增適用於 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>
注意
針對 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>
注意
FastCGI 設定可透過使用特別格式化的 FastCGI 應用程式和處理程式對應來設定每個月臺,這些設定可藉由比對具有 FastCGI 程式對應對應中<handlers>
對應 scriptProcessor 屬性之元素的 fullPath 和自變數屬性<application>
來區分。 若要建立這些對應,元素的 fullPath 和自變數屬性<application>
中的設定必須新增至 FastCGI 進程的對應中的 <handlers>
scriptProcessor 屬性,並以管道 “|” 字元分隔。 這個組合可作為每個FastCGI應用程式的唯一索引鍵。 例如,下列組態摘錄顯示兩 <個範例 fastCgi>/<application> 元素,以及兩個月臺特定 PHP 處理程式的對應 <處理程序> 對應:
<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
注意
當您使用 AppCmd.exe 來設定這些設定時,請務必將認可參數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()