PHP中文手册

版权信息

PHP 手册

入门指引

安装与配置

语言参考

安全

特点

函数参考

PHP 核心:骇客指南

FAQ

附录

Microsoft IIS 5.1 和 IIS 6.0

本章包含有在 Windows XP 和 Windows Server 2003 下的 Internet 信息服务(IIS)5.1 和 IIS 6.0 中安装 PHP 的指南。有关在 Windows Vista,Windows Server 2008,Windows 7 以及 Windows Server 2008 R2 下的 IIS 7.0 以及更高版本中安装 PHP 的指南见 Microsoft IIS 7.0 及更高版本一章。

配置 IIS 以处理 PHP 请求

根据手工安装步骤的说明下载和安装 PHP。

Note:

在使用 IIS 时推荐使用非线程安全的 PHP。可以在 » PHP for Windows: Binaries and Sources Releases 下载。

按以下示例在 php.ini 文件中配置 针对 CGI- 和 FastCGI- 的指令:

Example #1 php.ini 中的 CGI 和 FastCGI 设定

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0

下载并安装 » FastCGI for IIS。有 32 位和 64 位平台的,根据用户平台选择相应的下载。

用以下命令配置 FastCGI 扩展处理 PHP 请求。用指向 php-cgi.exe 文件的绝对路径替换其中的 "-path" 的参数。

Example #2 配置 FastCGI 扩展以处理 PHP 请求

cscript %windir%\system32\inetsrv\fcgiconfig.js -add -section:"PHP" ^
-extension:php -path:"C:\PHP\php-cgi.exe"

此命令将创建对应于 *.php 文件后缀的 IIS 脚本映射,则所有以 *.php 结尾的 URL 都会被 FastCGI 扩展处理。此外还配置了 FastCGI 扩展使用 php-cgi.exe 可执行文件来处理 PHP 请求。

Note:

至此所需的安装和配置步骤就完成了。以下剩余的指示是可选项,但是强烈推荐以使得在 IIS 上达到最佳的 PHP 功能和性能。

角色扮演及文件系统访问

在 IIS 中使用 PHP 建议激活 FastCGI 的角色扮演功能。此功能在 php.ini 中由 fastcgi.impersonate 指令控制。激活角色扮演后,PHP 将以 IIS 所认证的用户帐号身份进行所有的文件系统操作。这将确保即使在(同一个主机)不同的 IIS 网站下使用了同一个 PHP 进程,只要每个网站使用了不同的用户帐号作为 IIS 身份认证,则这些网站的 PHP 脚本将不能访问彼此的文件。

例如在 IIS 5.1 和 IIS 6.0 中,默认配置下的匿名认证将使用内置的用户帐号 IUSR_<MACHINE_NAME> 作为默认身份。这意味着要使得 IIS 能够运行 PHP 脚本,至少要将这些脚本的读取权限授予 IUSR_<MACHINE_NAME> 帐号。如果 PHP 程序需要对某些文件或文件夹进行写入操作,那 IUSR_<MACHINE_NAME> 帐号也需要有相对应的写入权限。

要查看哪个用户帐号被用作 IIS 匿名认证的身份,使用以下步骤:

  1. 在 Windows 开始菜单中选择“运行...”,输入“inetmgr”并点击“确定”;

  2. 在树形视图下展开“网站”节点,右键点击要使用的网站并选择“属性”;

  3. 点击“目录安全”面板;

  4. 记录下在“认证方式”对话框中的“用户名”字段。

IIS 5.1 和 IIS 6.0 的匿名认证

要修改文件及文件夹的权限,使用 Windows 资源管理器或者 icacls 命令行。

Example #3 配置文件访问权限

icacls C:\inetpub\wwwroot\upload /grant IUSR:(OI)(CI)(M)

在 IIS 中把 index.php 设定为默认文档

IIS 的默认文档用于没有指定文件名的 HTTP 请求。对于 PHP 应用来说默认文档通常为 index.php。要将 index.php 添加到 IIS 的默认文档列表中,使用以下步骤:

  1. 在 Windows 开始菜单中选择“运行...”,输入“inetmgr”并点击“确定”;

  2. 在树形视图下展开“网站”节点,右键点击要使用的网站并选择“属性”;

  3. 点击“文档”面板;

  4. 点击“添加...”按钮并在“默认内容页面”中输入“index.php”。

将 index.php 设为 IIS 的默认文档

FastCGI 和 PHP 回收配置

用以下命令配置 IIS FastCGI 对于 PHP 进程的回收设定。FastCGI 的设置 instanceMaxRequests 控制了单一的 php-cgi.exe 进程处理多少个请求之后会被 IIS 关闭。PHP 环境变量 PHP_FCGI_MAX_REQUESTS 控制了一个 php-cgi.exe 进程处理多少个请求之后会被自我回收。要确保 FastCGI 中 InstanceMaxRequests 的值小于或等于 PHP_FCGI_MAX_REQUESTS 的值。

Example #4 配置 FastCGI 和 PHP 的回收

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-InstanceMaxRequests:10000cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000

FastCGI 超时设定

如果会有一些需时较长的 PHP 脚本运行,则增加超时的设定值。有两个控制超时的指令 activityTimeout requestTimeout 。有关这些设定的更多信息参见 » Configuring FastCGI Extension for IIS 6.0

Example #5 配置 FastCGI 超时设定

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-ActivityTimeout:90cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-RequestTimeout:90

改变 php.ini 文件的位置

PHP 在几个位置搜索配置文件 php.ini,可以通过环境变量 PHPRC 来改变 php.ini 的默认位置。要使得 PHP 从用户指定的位置加载配置文件,使用以下命令。指向 php.ini 文件的绝对路径应作为环境变量 PHPRC 的值。

Example #6 改变 php.ini 文件的位置

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-EnvironmentVars:PHPRC:"C:\Some\Directory\"