PHP 手册
后退 | 章 6. Windows 系统下的安装 | 前进

# Microsoft IIS／PWS

本节包括针对 IIS（Microsoft Internet Information Server）的说明与提示。

警告
如果使用 CGI 方式安装，则服务器对于某些可能的攻击是开放的。请阅读 CGI 安全一章以学习如何防御这些攻击。

## PHP 与 IIS 安装的通用事项

- 首先请阅读手工安装步骤。不要跳过这一步，这里提供了将 PHP 安装到 Windows 中的极其重要的信息。

- CGI 用户必须在 `php.ini` 中将 cgi.force_redirect 指令设为 0。其重要细节请阅读 FAQ 中的cgi.force_redirect。此外，CGI 用户可能需要设定 cgi.redirect_status_env 指令。在使用这些指令时，确保它们没有在 `php.ini` 中被注释掉。

- PHP 4 的 CGI 文件名是 `php.exe` 而在 PHP 5 中是 `php-cgi.exe`。在 PHP 5 中，`php.exe` 是 CLI 版本，不是 CGI。

- 修改 Windows 的 PATH 环境变量以把 PHP 目录包括进去。这样 PHP 的 DLL 文件，可执行文件和 `php.ini` 就都可以保留在 PHP 目录中而不用把 Windows 系统目录搞乱了。更多细节见 FAQ 中的设定路径 PATH。

- IIS 专用用户（通常为 IUSR_MACHINENAME）需要能够读取各个文件和目录的权限，例如 `php.ini`，docroot 和 session 的 tmp 目录。

- 确保在 `php.ini` 中正确设定了 extension_dir 和 doc_root 指令的值。这些指令依赖于 PHP 被安装的系统。在 PHP 4 中，extension_dir 是 `extensions` 而在 PHP 5 中是 `ext`。因此在 PHP 5 中 extensions_dir 的一个取值例子是 `"c:\php\ext"`，IIS 的 doc_root 的取值例子是 `"c:\Inetpub\wwwroot"`。

- PHP 扩展库的 DLL 文件，如 `php_mysql.dll` 和 `php_curl.dll`，存放于 PHP 下载的 ZIP 包中（自动安装包里没有）。在 PHP 5 中，很多扩展库都是 PECL 的一部分，可以从“Collection of PECL modules”包中下载，例如 `php_zip.dll` 和 `php_ssh2.dll`。点击进入 PHP 下载页。

- 在定义应用程序扩展名映射时，应选中“检查文件是否存在”。以极小的性能为代价，IIS（或者 PWS）会在调用 PHP 之前检查脚本文件是否存在并选出认证方法。这意味着 web 服务器会提供一个有道理的 404 形式错误信息而不是一条 CGI 错误说什么 PHP 没有输出任何数据。

## Windows NT／200x／XP 和 IIS 4 或更高版本

PHP 可以安装为 CGI 或者 ISAPI 模块。不管哪种，都需要启动 Microsoft 管理控制台（也可能是“Internet 信息服务”，在 Windows NT 4.0 Option Pack 中或者在 Windows 2000/XP 下的控制面板=>管理工具）。然后右键点击 web 服务器节点（通常为“默认网站”），并选择“属性”。

如果想用 CGI 方式，按如下方法进行：

- 选择“主目录”，“虚拟目录”或“目录”标签页，然后进行：

- 将执行权限改为“纯脚本”

- 点“配置”按钮，选择“映射”标签页。点击“添加”按钮，将“可执行文件”指向适当的 CGI 文件名。例如 PHP 5 的值可能是：`C:\php\php-cgi.exe`。在“扩展名”中填入 .php。选择“全部动作”（或者“限制为”留空），选中“脚本引擎”。然后点击“确定”。

- 设定合适的目录安全性（在 Internet 信息服务中完成）。如果 NT 服务器使用 NTFS 文件系统，给 I_USR_ 用户加上 `php.exe`/`php-cgi.exe` 文件所在目录的可执行权限（通过资源管理器完成）。

要用 ISAPI 模块方式，按如下方法进行：

- 如果不想用 PHP 进行 HTTP 认证，应该跳过这一步。在“ISAPI 筛选器”标签页中添加一个新的 ISAPI 筛选器。“筛选器名称”设为 PHP，“可执行文件”设为 `php4isapi.dll`/`php5isapi.dll` 的路径。

- 选择“主目录”，“虚拟目录”或“目录”标签页，然后进行：

- 将执行权限改为“纯脚本”

- 点“配置”按钮，选择“映射”标签页。点击“添加”按钮，将“可执行文件”指向适当的 ISAPI DLL。例如 PHP 5 的值可能是：`C:\php\php5isapi.dll`。在“扩展名”中填入 .php。选择“全部动作”（或者“限制为”留空），选中“脚本引擎”。然后点击“确定”。

- 完全停止 IIS（NET STOP iisadmin）

- 重新启动 IIS（NET START w3svc）

对于 IIS 6（2003 Server），打开 IIS 管理器，进入 web 服务扩展，点击“添加一个新的 web 服务扩展”，“扩展名”中输入名称，例如 PHP，再点击“添加”按钮，点击“浏览”选择要么 ISAPI 文件（`php4isapi.dll` 或 `php5isapi.dll`）或者 CGI 文件（`php.exe` 或 `php-cgi.exe`）作为“文件路径”后点“确定”，然后选中“设置扩展状态为允许”并点“确定”。

要使用 `index.php` 作为默认文档，在“文档”标签页中选择“添加”。输入 `index.php` 并点“确定”。用上下箭头按钮调整顺序。这和在 Apache 中设定 DirectoryIndex 相似。

对于每个要关联为 PHP 脚本的后缀都要重复以上步骤。.php 是最常用的，此外为兼容一些遗留下来的老程序可能还需要加上 .php3。

如果过些时候之后碰到 CPU 占用率达到 100%，则取消选中“缓存 ISAPI 应用程序”（“主目录”下点“配置”按钮”）。

## Windows 和 PWS 4

PWS 4 不支持 ISAPI，只能使用 PHP CGI。

- 编辑包里附上的 `pws-php4cgi.reg`/`pws-php5cgi.reg` 文件（PHP 4 在 SAPI 目录下，PHP 5 在主目录下）改为自己的 `php.exe`/`php-cgi.exe` 文件的路径。反斜线应双写，例如：[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters\Script Map] ".php"="C:\\php\\php.exe"（如果用 PHP 5 则改为 C:\\php\\php-cgi.exe）。然后将此注册表文件合并入系统；鼠标双击此文件即可。

- 在 PWS 管理器中，右键点击需要加入 PHP 支持的目录并选择“属性”。选中“执行”，并确认。

## Windows 和 PWS／IIS 3

配置此服务器的推荐方法是使用随包发布的注册表文件（PHP 4 是 SAPI 目录下的 `pws-php4cgi.reg`，PHP 5 是主目录下的 `pws-php5cgi.reg`）。可能要编辑此文件已确保其中的 PHP 安装目录和扩展库目录符合用户自己的设置。或者按以下步骤手工完成。

警告
以下步骤涉及到直接操作 Windows 注册表。如果出错可能使系统不稳定，强烈建议先备份注册表。如果用户损坏了注册表 PHP 开发组不负任何责任。

- 运行 Regedit。

- 找到：HKEY_LOCAL_MACHINE /System /CurrentControlSet /Services /W3Svc /Parameters /ScriptMap。

- 在编辑菜单选择：新建->字符串值。

- 输入 PHP 脚本想要使用的后缀，例如 .php。

- 双击新建的字符串值并在“数值数据”栏里输入 `php.exe` 的路径，例如 PHP 4 是 `C:\php\php.exe "%s" %s`，或者 PHP 5 是 `C:\php\php-cgi.exe "%s" %s`。

- 对每个要关联为 PHP 脚本的文件后缀名重复以上步骤。

以下步骤不影响 web 服务器安装，仅适用于想在命令行下运行 PHP 脚本（例如运行 `C:\myscripts\test.php`）或者在资源管理器窗口中双击文件名就运行程序。如果更希望双击 PHP 文件名是将其调入文本编辑器，则跳过以下步骤。

- 找到：HKEY_CLASSES_ROOT。

- 在编辑菜单选择：新建->项。

- 将新项命名为前一节设的后缀，例如：.php。

- 选中新项，在右边栏双击“默认”并输入 phpfile。

- 对每个在前一节设定的后缀都重复以上步骤。

- 在 HKEY_CLASSES_ROOT 下再创建另一个新建->项 并命名为 phpfile。

- 选中新项 phpfile，在右边栏双击“默认”并输入 PHP Script。

- 右键点击 phpfile 项并选择新建->项，命名为 Shell。

- 右键点击 Shell 项并选择新建->项，命名为 open。

- 右键点击 open 项并选择新建->项，命名为 command。

- 选中新项 command，在右边栏双击“默认”并输入 `php.exe` 的路径，例如：c:\php\php.exe -q %1（不要忘了 %1）。

- 退出 Regedit。

- 如果是 Windows 下的 PWS，重启动以重新加载注册表。

PWS 和 IIS 3 的用户现在就拥有了完全可运作的系统。IIS 3 用户可以使用来自 Steven Genusa 的漂亮工具来配置脚本映射。

后退 | 起点 | 前进
ActiveScript | 上一级 | Microsoft Windows 下的 Apache 1.3.x