FastCGI <fastCgi>

개요

요소 <fastCgi> 에는 각각 FastCGI 애플리케이션 풀 정의를 만드는 요소 컬렉션 <application> 이 포함됩니다. 인터넷 정보 서비스(IIS) 7에는 FastCGI 구성 요소가 포함됩니다. 이 구성 요소를 사용하면 안정성이 향상되고 성능이 향상되며 IIS 7에서 PHP 애플리케이션 프레임워크 및 기타 웹 애플리케이션 프레임워크를 실행할 수 있습니다.

가장 간단한 FastCGI 애플리케이션 풀 정의를 사용하려면 요소에 fullPath 특성을 포함하여 특정 애플리케이션 프레임워크에 <application> 사용할 이진 파일을 정의해야 합니다. PHP 프레임워크의 경우 전체Path 특성을 PHP 이진 파일의 디렉터리 및 파일 이름으로 설정합니다.

다른 특성은 선택 사항이며 여러 다른 매개 변수를 구성할 수 있습니다. 여기에는 FastCGI 작업자 프로세스가 재활용되기 전에 처리할 수 있는 최대 요청 수, 애플리케이션 풀에 대한 작업자 프로세스의 최대 수 및 FastCGI 요청이 걸릴 수 있는 최대 시간이 포함됩니다.

참고 항목

FastCGI를 사용하여 요청을 처리하려면 먼저 경로 및 특정 파일 이름 확장명을 FastCGI 모듈에 매핑하고 대상 FastCGI 프로세스를 스크립트 프로세서로 지정해야 합니다.

IIS 7.5의 새로운 기능

IIS 7.5는 요소에 다음 특성을 추가했습니다 <fastCgi>/<application> .

  • monitorChangesTo 특성을 사용하면 FastCGI 애플리케이션의 동작에 영향을 줄 수 있는 변경 내용을 모니터링할 파일을 지정할 수 있습니다. 예를 들어 PHP 프레임워크를 사용하는 경우 PHP를 모니터링하도록 IIS를 구성할 수 있습니다. monitorChangesTo 특성에서 파일의 전체 경로를 지정하여 변경 내용에 대한 INI 파일입니다.
  • stderrMode 특성은 IIS 7이 STDERR 스트림을 통해 FastCGI 애플리케이션에서 반환되는 오류를 처리하는 방법을 지정합니다.
  • signalBeforeTerminateSeconds 특성을 사용하면 IIS가 FastCGI 애플리케이션을 종료해야 한다는 신호를 받은 후 지정된 기간 동안 기다리도록 IIS를 구성할 수 있습니다. 이렇게 하면 IIS가 프로세스를 종료하기 전에 FastCGI 애플리케이션이 모든 설정을 클린 수 있습니다.

호환성

버전 주의
IIS 10.0 <fastCgi> IIS 10.0에서 요소가 수정되지 않았습니다.
IIS 8.5 <fastCgi> IIS 8.5에서 요소가 수정되지 않았습니다.
IIS 8.0 <fastCgi> IIS 8.0에서는 요소가 수정되지 않았습니다.
IIS 7.5 <application> 컬렉션의 <fastCgi> 요소는 monitorChangesTo, stderrModesignalBeforeTerminateSeconds 특성을 사용하여 IIS 7.5에서 업데이트되었습니다.
IIS 7.0 <fastCgi> 요소는 IIS 7.0에서 도입되었습니다.
IIS 6.0 해당 없음

설정

FastCGI 환경을 사용하려면 먼저 CGI 역할 서비스를 설치해야 합니다. 설치 프로세스는 CGI(Common Gateway Interface) 역할 서비스를 둘 다 <globalModules> 에 등록합니다 <modules> . FastCGI 환경을 설치하기 위해 다른 단계를 수행할 필요가 없습니다.

Windows Server 2012 또는 Windows Server 2012 R2

  1. 작업 표시줄에서 서버 관리자를 클릭합니다.
  2. 서버 관리자 관리 메뉴를 클릭한 다음 역할 및 기능 추가를 클릭합니다.
  3. 역할 및 기능 추가 마법사에서 다음을 클릭합니다. 설치 유형을 선택하고 다음을 클릭합니다. 대상 서버를 선택하고 다음을 클릭합니다.
  4. 서버 역할 페이지에서 IIS(웹 서버)를 확장하고, 웹 서버를 확장하고, 애플리케이션 개발을 확장한 다음, CGI를 선택합니다. 다음을 클릭합니다.
    Windows Server 2012 인터페이스에서 선택한 C G의 스크린샷
  5. 기능 선택 페이지에서 다음을 클릭합니다.
  6. 설치 선택 확인 페이지에서 설치를 클릭합니다.
  7. Results(결과) 페이지에서 Close(닫기)를 클릭합니다.

Windows 8 또는 Windows 8.1

  1. 시작 화면에서 포인터를 왼쪽 아래 모서리로 이동하고 시작 단추를 마우스 오른쪽 단추로 클릭한 다음 제어판 클릭합니다.
  2. 제어판 프로그램 및 기능을 클릭한 다음 Windows 기능 켜기 또는 끄기를 클릭합니다.
  3. 인터넷 정보 서비스 확장하고, World Wide Web Services를 확장하고, 애플리케이션 개발 기능을 확장한 다음, CGI를 선택합니다.
    Windows 8 인터페이스에서 선택한 C G의 스크린샷.
  4. 확인을 클릭합니다.
  5. 닫기를 클릭합니다.

Windows Server 2008 또는 Windows Server 2008 R2

  1. 작업 표시줄에서 시작을 클릭하고 관리istrative Tools를 가리킨 다음 서버 관리자 클릭합니다.
  2. 서버 관리자 계층 구조 창에서 역할을 확장한 다음 웹 서버(IIS)를 클릭합니다.
  3. 웹 서버(IIS) 창에서 Role Services 섹션으로 스크롤한 다음 역할 서비스 추가를 클릭합니다.
  4. 역할 서비스 추가 마법사역할 서비스 선택 페이지에서 CGI를 선택하고 다음을 클릭합니다.
    Windows Server 2008 인터페이스에서 선택한 C G의 스크린샷
  5. 설치 선택 확인 페이지에서 설치를 클릭합니다.
  6. Results(결과) 페이지에서 Close(닫기)를 클릭합니다.

Windows Vista 또는 Windows 7

  1. 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
  2. 제어판 프로그램 및 기능을 클릭한 다음 Windows 기능 켜기 또는 끄기를 클릭합니다.
  3. 인터넷 정보 서비스 확장한 다음, CGI를 선택한 다음 확인을 클릭합니다.
    Windows Vista 또는 Windows 7 인터페이스에서 선택한 C G의 스크린샷

방법

IIS 7.0 사용자에 대한 참고: 이 섹션의 일부 단계에서는 FastCGI 설정에 대한 사용자 인터페이스를 포함하는 IIS 7.0용 Microsoft 관리istration Pack을 설치해야 할 수 있습니다. IIS 7.0용 Microsoft 관리istration Pack을 설치하려면 다음 URL을 참조하세요.

PHP에 대한 전역 FastCGI 처리기 매핑을 만드는 방법

참고 항목

다음 프로시저가 작동하려면 지정한 파일 경로 또는 파일 이름 확장명을 실행할 이진 파일이 이미 설치되어 있어야 합니다. 이 예제에서는 .에서 https://www.php.net/사용할 수 있는 PHP 구현을 사용합니다.

  1. IIS(open 인터넷 정보 서비스) 관리자:

    • Windows Server 2012 또는 Windows Server 2012 R2를 사용하는 경우:

      • 작업 표시줄에서 서버 관리자 클릭하고 도구를 클릭한 다음 인터넷 정보 서비스(IIS) 관리자를 클릭합니다.
    • Windows 8 또는 Windows 8.1을 사용하는 경우:

      • Windows 키를 누른 상태로 문자 X를 누른 다음 제어판 클릭합니다.
      • 관리istrative Tools를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
    • Windows Server 2008 또는 Windows Server 2008 R2를 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭하고 관리영구 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
    • Windows Vista 또는 Windows 7을 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
      • 관리istrative Tools를 두 번 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
  2. 커넥트 창에서 FastCGI 처리기 매핑을 구성할 서버 이름을 클릭합니다.

  3. 창에서 처리기 매핑을 두 번 클릭합니다.
    기본 웹 사이트 홈 창에서 선택한 처리기 매핑의 스크린샷

  4. 작업 창에서 모듈 매핑 추가를 클릭합니다. I S 관리자의 사용 안 함 및 사용 처리기 매핑 스크린샷

  5. 다음 정보를 입력합니다.

    • 요청 경로 텍스트 상자에 파일 이름 확장명을 입력합니다. 예를 들어 "*.php"입니다.

    • 모듈 드롭다운 목록에서 FastCgiModule 을 클릭합니다.

    • 실행 상자에 스크립팅 엔진의 경로를 입력합니다. 예를 들어 "C:\PHP\php-cgi.exe"입니다.

    • 이름 상자에 처리기 매핑의 고유한 이름을 입력합니다. 예를 들어 "PHP-FastCGI"입니다.

      지정한 옵션이 있는 모듈 매핑 추가 대화 상자의 스크린샷

    • 요청 제한 클릭

    • 요청이 매핑된 경우에만 Invoke 처리기를 선택합니다.

    • 파일 또는 폴더 옵션을 선택하려면 클릭합니다.

    • 확인을 클릭합니다.

      요청 제한 대화 상자에서 매핑 옵션을 설정하는 스크린샷

  6. 확인을 클릭합니다.

  7. 모듈 매핑 추가 대화 상자에서 FastCGI 애플리케이션을 만들라는 메시지가 표시되면 [예]를 클릭합니다.

    지정한 실행 파일에 대한 새 애플리케이션을 만들도록 확인하기 전의 스크린샷

    참고 항목

    이렇게 하면 방금 만든 처리기 매핑에 대한 FastCGI 애플리케이션이 자동으로 만들어집니다. 아니요를 선택하면 나중에 FastCGI 애플리케이션을 수동으로 만들 수 있습니다.

PHP용 FastCGI 애플리케이션을 만드는 방법

참고 항목

다음 프로시저가 작동하려면 지정한 파일 경로 또는 파일 이름 확장명을 실행할 이진 파일이 이미 설치되어 있어야 합니다. 이 예제에서는 www.php.net 사용할 수 있는 PHP 구현을 사용합니다.

참고 항목

FastCGI 애플리케이션을 추가해도 처리기 매핑이 자동으로 추가되지는 않습니다. 이렇게 하려면 이 문서의 PHP대한 FastCGI 처리기 매핑을 만드는 방법] 섹션의 단계를 따라야 합니다.

  1. IIS(open 인터넷 정보 서비스) 관리자:

    • Windows Server 2012 또는 Windows Server 2012 R2를 사용하는 경우:

      • 작업 표시줄에서 서버 관리자 클릭하고 도구를 클릭한 다음 인터넷 정보 서비스(IIS) 관리자를 클릭합니다.
    • Windows 8 또는 Windows 8.1을 사용하는 경우:

      • Windows 키를 누른 상태로 문자 X를 누른 다음 제어판 클릭합니다.
      • 관리istrative Tools를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
    • Windows Server 2008 또는 Windows Server 2008 R2를 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭하고 관리영구 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
    • Windows Vista 또는 Windows 7을 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
      • 관리istrative Tools를 두 번 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
  2. 커넥트 창에서 FastCGI 설정을 구성할 서버 이름을 클릭합니다.

  3. 창에서 FastCGI 설정 두 번 클릭합니다.
    서버 홈 창에서 선택한 Fast C G 설정 스크린샷.

  4. 작업 창에서 애플리케이션 추가를 클릭합니다.
    빈 Fast C G I 설정 창의 스크린샷

  5. FastCGI 애플리케이션 추가 대화 상자에서 다음 정보를 입력합니다.

    • 전체 경로 상자에 스크립팅 엔진의 경로를 입력합니다. 예를 들어 "C:\PHP\php-cgi.exe"입니다.

    • FastCGI 애플리케이션에 대한 최대 요청 수를 입력합니다.

      참고 항목

      PHP의 경우 이 숫자는 환경 변수를 사용하여 PHP_FCGI_MAX_REQUESTS 구성된 PHP 환경에 대한 최대 요청 수보다 작거나 같아야 합니다.
      기본 Fast C G I 속성이 있는 빠른 C G I 애플리케이션 추가 대화 상자의 스크린샷.

  6. EnvironmentVariables 옆에 있는 줄임표(...)를 클릭하여 환경 변수 컬렉션 편집기를 엽니다.

  7. EnvironmentVariables 컬렉션 편집기 대화 상자에서 추가를 클릭합니다.
    빈 환경 변수 컬렉션 편집기 대화 상자의 스크린샷

  8. 다음 정보를 입력한 다음 확인을 클릭합니다.

    • 이름에 "PHP_FCGI_MAX_REQUESTS"를 입력합니다.

    • 값에 "10000"을 입력합니다.

      지정된 속성이 있는 멤버 목록의 새 변수 스크린샷

  9. 확인을 클릭하여 FastCGI 애플리케이션 추가 대화 상자를 닫 습니다.

PHP용 FastCGI 환경 변수를 추가하는 방법

참고 항목

다음 프로시저가 작동하려면 지정한 파일 경로 또는 파일 이름 확장명을 실행할 이진 파일이 이미 설치되어 있어야 합니다. 이 예제에서는 .에서 https://www.php.net/사용할 수 있는 PHP 구현을 사용합니다.

  1. IIS(open 인터넷 정보 서비스) 관리자:

    • Windows Server 2012 또는 Windows Server 2012 R2를 사용하는 경우:

      • 작업 표시줄에서 서버 관리자 클릭하고 도구를 클릭한 다음 인터넷 정보 서비스(IIS) 관리자를 클릭합니다.
    • Windows 8 또는 Windows 8.1을 사용하는 경우:

      • Windows 키를 누른 상태로 문자 X를 누른 다음 제어판 클릭합니다.
      • 관리istrative Tools를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
    • Windows Server 2008 또는 Windows Server 2008 R2를 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭하고 관리영구 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
    • Windows Vista 또는 Windows 7을 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
      • 관리istrative Tools를 두 번 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
  2. 커넥트 창에서 FastCGI 설정을 구성할 서버 이름을 클릭합니다.

  3. 창에서 FastCGI 설정 두 번 클릭합니다.
    서버 홈 창에서 선택한 빠른 CG 설정 아이콘의 스크린샷

  4. FastCGI 설정 창에서 PHP 애플리케이션을 강조 표시한 다음 작업 창에서 편집클릭합니다.
    빠른 CG I 설정 창에서 선택한 P H P 애플리케이션의 스크린샷

  5. FastCGI 애플리케이션 편집 대화 상자에서 EnvironmentVariables 옆에 있는 줄임표(...)를 클릭하여 환경 변수 컬렉션 편집기를 엽니다.
    지정된 옵션이 있는 빠른 CG I 애플리케이션 편집 대화 상자의 스크린샷.

  6. EnvironmentVariables 컬렉션 편집기 대화 상자에서 추가를 클릭합니다.
    새 변수를 추가하기 전에 빈 환경 변수 컬렉션 편집기 대화 상자의 스크린샷

  7. 다음 정보를 입력한 다음 확인을 클릭합니다.

    • 이름에 "PHP_FCGI_MAX_REQUESTS"를 입력합니다.

    • 값에 "10000"을 입력합니다.

      지정된 속성을 사용하여 새 환경 변수를 추가한 후의 스크린샷

  8. 확인을 클릭하여 FastCGI 애플리케이션 추가 대화 상자를 닫 습니다.

구성

ApplicationHost.config 파일의 서버 수준 또는 사이트 수준, 애플리케이션 수준 또는 Web.config 파일의 디렉터리 수준에서 요소를 구성할 <fastCgi> 수 있습니다.

특성

없음

자식 요소

요소 설명
application 선택적 요소입니다.

FastCGI 프로세스 풀 정의의 컬렉션에 FastCGI 프로세스 풀 정의를 추가합니다.

구성 샘플

다음 구성 샘플에서는 PHP용 FastCGI 애플리케이션을 추가하고 instanceMaxRequests 특성을 "10000"으로 설정하고 환경 변수를 "10000"으로 설정합니다PHP_FCGI_MAX_REQUESTS.

<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의 경우 환경 변수의 값은 FastCGI 요소의 PHP_FCGI_MAX_REQUESTS instanceMaxRequests 특성에 지정된 값보다 작거나 같은 숫자여야 <application> 합니다.

다음 구성 샘플에서는 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 프로세스에 대한 <application> 매핑에서 <handlers> 요소의 fullPath인수 특성을 해당 scriptProcessor 특성과 일치시켜 구별됩니다. 이러한 매핑을 만들려면 요소에 대한 fullPath인수 특성의 설정을 FastCGI 프로세스 매핑의 scriptProcessor 특성에 <handlers> 추가하고 파이프 "|" <application> 문자로 구분해야 합니다. 이 조합은 각 FastCGI 애플리케이션에 대한 고유한 키 역할을 합니다. 예를 들어 다음 구성 발췌문에서는 두 개의 사이트별 PHP 처리기에 대한 두 가지 예제 <fastCgi>/<application> 요소와 해당 <처리기> 매핑을 보여 줍니다.

<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"으로 설정하고 환경 변수를 "10000"으로 설정합니다PHP_FCGI_MAX_REQUESTS. 또한 각 샘플은 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()