Internet Information Services (IIS) 7.0 adds support for the
FastCGI protocol, which improves the performance and reliability of
popular application frameworks, such as PHP, hosted on an IIS Web
server. FastCGI provides a high-performance alternative to the Common
Gateway Interface (CGI) protocol, a standard way of interfacing external
applications with Web servers.
IIS 7 for Windows Server® 2008 and Windows Vista® with Service Pack 1 (SP1) now include a built-in FastCGI component. This topic describes how to use the FastCGI module to host PHP applications on IIS 7 in Windows Server 2008 and Windows Vista with SP1.
Important: This topic provides instructions about how to install and how to use the FastCGI component on Windows Server 2008 and Windows Vista with SP1. There is no officially supported FastCGI component for Windows Vista (not SP1). It is strongly recommended that you upgrade to Windows Vista with SP1 if you have to use the FastCGI component on the Windows Vista operating system.
IIS 7 for Windows Server® 2008 and Windows Vista® with Service Pack 1 (SP1) now include a built-in FastCGI component. This topic describes how to use the FastCGI module to host PHP applications on IIS 7 in Windows Server 2008 and Windows Vista with SP1.
Important: This topic provides instructions about how to install and how to use the FastCGI component on Windows Server 2008 and Windows Vista with SP1. There is no officially supported FastCGI component for Windows Vista (not SP1). It is strongly recommended that you upgrade to Windows Vista with SP1 if you have to use the FastCGI component on the Windows Vista operating system.
-
Open Server Manager.
-
In the right pane, under Roles Summary, click Add Roles.
-
Use the Add Roles Wizard to select the CGI role service. This enables both the CGI and FastCGI services.
-
Go to the Windows Start menu, and open the Control Panel.
-
Double-click Programs and Features.
-
Click Turn Windows features on or off.
-
In the Windows Features dialog box, expand Internet Information Services, expand World Wide Web Services, expand Application Development Features, and then select CGI. Click OK.
-
Install the update for the FastCGI module from one of
the following locations. This update fixes several known compatibility
issues with popular PHP applications.
It is recommended that you use a non-thread-safe build of PHP
with IIS 7 FastCGI. A non-thread-safe build of PHP provides significant
performance gains over the standard build by not doing any
thread-safety checks. These checks are not necessary because FastCGI
guarantees a single-threaded execution environment.
-
Go to the PHP Web site and download the latest non-thread-safe binaries of PHP.
-
Unzip the files to a directory of your choice, for example, C:\PHP. Rename the Php.ini-recommended to Php.ini
-
Open the Php.ini file, and then uncomment and modify the settings as follows:
- Set fastcgi.impersonate = 1. FastCGI in IIS supports the ability to impersonate the security tokens of the calling client. This allows IIS to define the security context under which the request runs.
- Set cgi.fix_pathinfo=1. cgi.fix_pathinfo provides actual PATH_INFO/PATH_TRANSLATED support for CGI. Previous PHP behavior was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to ignore that setting in PATH_INFO. For more information about PATH_INFO, see the CGI specifications. Setting the PATH_INFO value to 1 will cause PHP CGI to match its paths to the specification.
- Set cgi.force_redirect = 0.
- Set open_basedir to point to a folder or network path where the content of the Web site is located.
-
To test whether the PHP installation is successful, type the following at a command prompt:
C:\PHP>php –info
If PHP was installed correctly and all its dependencies are available on the computer, then this command will output the current PHP configuration information.
For IIS 7 to host PHP applications, you must add a handler
mapping that tells IIS to pass all requests for PHP files to the PHP
application framework using the FastCGI protocol.
-
Open IIS Manager, and then move to the server level.
-
Double-click Handler Mappings.
-
In the Actions pane, click Add Module Mapping.
-
In the Add Module Mapping dialog box, specify the configuration settings as follows:
- Request path: *.php
- Module: FastCgiModule
- Executable: C:\[Path to your PHP installation]\php-cgi.exe
- Name: PHPviaFastCGI
-
Click OK.
-
In the dialog box that asks you to confirm that you want to create a FastCGI application for the executable, click Yes.
-
To verify that the handler mapping works correctly,
create a Phpinfo.php file in the C:\inetpub\wwwroot folder that contains
the following:
<?php phpinfo(); ?>
-
Open a Web browser, and then navigate to
http://localhost/phpinfo.php. If everything was set up correctly, you
will see the standard PHP information page.
You can also use Appcmd.exe to add a handler mapping.
-
To create a FastCGI application process pool, run the following command:
C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCgi /+[fullPath='c:\{php_folder}\php-cgi.exe']
-
To create the handler mapping, run the following command:
C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='c:\{php_folder}\php-cgi.exe',resourceType='Either']
Note: If you are using PHP version 4.x, instead of Php-cgi.exe, you can use Php.exe.
Make sure that FastCGI always recycles Php-cgi.exe processes
before native PHP recycling starts. The configuration property
instanceMaxRequests controls the FastCGI process-recycling behavior.
This property specifies how many requests FastCGI will process before
recycling. PHP also has a similar process-recycling functionality that
is controlled by the environment variable PHP_FCGI_MAX_REQUESTS. By
setting instanceMaxRequests to a value that is smaller than or equal to
PHP_FCGI_MAX_REQUESTS, you can make sure that the native PHP
process-recycling logic will never start.
To set these configuration properties, use the following commands:
C:\>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='c:\{php_folder}\php-cgi.exe'].instanceMaxRequests:10000
C:\>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /+[fullPath='c:\{php_folder}\php-cgi.exe'].environmentVariables.[name=’PHP_FCGI_MAX_REQUESTS’, value='10000']
Note: If these parameters have not been set, the following default settings will be used (on most PHP builds): instanceMaxRequests = 200, PHP_FCGI_MAX_REQUESTS = 500.
To set these configuration properties, use the following commands:
C:\>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='c:\{php_folder}\php-cgi.exe'].instanceMaxRequests:10000
C:\>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /+[fullPath='c:\{php_folder}\php-cgi.exe'].environmentVariables.[name=’PHP_FCGI_MAX_REQUESTS’, value='10000']
Note: If these parameters have not been set, the following default settings will be used (on most PHP builds): instanceMaxRequests = 200, PHP_FCGI_MAX_REQUESTS = 500.
No comments:
Post a Comment