安装环境 -> 配置 IIS -> 配置 PHP -> 测试网站。

(图片来源网络,侵删)
下面我将为你提供一个详细、分步的指南,适用于 Windows Server 2008 R2 及更高版本(包括 Windows 10/11 的 IIS 功能)。
核心概念:IIS 如何处理 PHP?
IIS 本身是一个 Web 服务器,它原生擅长处理 HTML、ASP.NET 等,但不认识 PHP 文件,我们需要一个“桥梁”程序,这个程序就是 PHP 的 FastCGI 进程管理器。
- FastCGI:这是一个协议,允许 IIS 将 PHP 请求转发给一个独立的 PHP-CGI 进程来处理,处理完毕后,PHP-CGI 将结果返回给 IIS。
- PHP Manager:这是一个微软官方提供的 IIS 管理工具,可以极大地简化 PHP 的配置过程,强烈推荐使用。
第一步:安装所需组件
安装 IIS
如果你的服务器上还没有安装 IIS,请按以下步骤操作:
- 打开 服务器管理器 (Server Manager)。
- 点击 “添加角色和功能” (Add Roles and Features)。
- 在向导中,点击 “下一步” 直到 “角色” (Roles) 页面。
- 勾选 “Web 服务器 (IIS)” (Web Server (IIS))。
- 在弹出的窗口中,确保勾选以下 IIS 功能(这些对于运行 PHP 至关重要):
- 应用程序开发
- [x] ASP.NET (虽然我们不用,但最好安装)
- [x] CGI (这是运行 PHP FastCGI 的基础!)
- 常见 HTTP 功能
- [x] 默认文档 (Default Document)
- [x] HTTP 重定向 (HTTP Redirection)
- [x] 目录浏览 (Directory Browsing) (可选,方便调试)
- 健康工具和日志记录
- [x] 请求监控 (Request Monitoring)
- [x] 日志 (Logging)
- 应用程序开发
- 点击 “安装” (Install) 等待完成。
安装 PHP Manager (推荐)
这是简化配置的最佳方式。
- 下载 PHP Manager for IIS:
- 官方下载地址:https://www.iis.net/downloads/microsoft/php-manager
- 它通常是一个
.msi安装文件。
- 双击运行安装程序,按照向导完成安装,安装后,IIS 管理器中会出现一个新的 “PHP Manager” 图标。
下载并解压 PHP
- 从 PHP 官方网站下载最新的非线程安全 (Non-Thread Safe) 版本,对于 IIS + FastCGI,NTS 版本是推荐的选择。
- 官方下载地址:https://windows.php.net/download/
- 选择 "VC15 x64 Non Thread Safe" 或更新的版本 (VC16, VC19),注意选择 x64 版本,以匹配 64 位的 IIS。
- 将下载的 ZIP 压缩包解压到一个固定的、无空格的路径下,
C:\php。
第二步:使用 PHP Manager 配置 PHP
这是最核心的一步,打开 IIS 管理器 (可以在开始菜单搜索或从服务器管理器打开)。
-
注册 PHP
- 在左侧的连接窗格中,点击你的服务器节点。
- 在中间窗格中,双击 “PHP Manager”。
- 在右侧的“操作”窗格中,点击 “Register PHP version...” (注册 PHP 版本)。
- 在弹出的窗口中,点击 “浏览”,找到你刚刚解压的 PHP 文件夹,然后选择
php-cgi.exe文件(C:\php\php-cgi.exe)。 - 点击 “确定”。
PHP Manager 会自动完成以下操作:
- 在 IIS 中为
.php文件映射到 FastCGI 处理程序。 - 创建一个
php.ini配置文件的副本(通常在C:\php目录下)。 - 将该
php.ini文件设置为活动配置。
-
配置
php.ini- 在 PHP Manager 的操作窗格中,点击 “Open php.ini” (打开 php.ini),这会直接打开活动配置文件。
- 修改以下几个关键配置项:
cgi.fix_pathinfo = 1:非常重要! 这个选项让 PHP 能够正确解析 URL 中的路径信息(/index.php/path/to/something),对于很多框架(如 WordPress, Laravel)是必需的。extension_dir = "ext":确保这个路径指向你 PHP 文件夹下的ext目录(C:\php\ext)。date.timezone = "Asia/Shanghai":设置你的时区,避免 PHP 警告。upload_max_filesize = 32M和post_max_size = 32M:根据你的需求调整上传文件大小限制。- 启用你需要的 PHP 扩展:去掉扩展名前面的分号 ,要启用 MySQL 支持,找到
;extension=mysqli并改为extension=mysqli。
- 保存
php.ini文件。
-
重启 IIS
- 在 IIS 管理器中,点击服务器节点。
- 在右侧的“操作”窗格中,点击 “Restart” (重启),这一步是让新的 PHP 配置生效所必需的。
第三步:创建和配置网站
PHP 环境已经就绪,我们来创建一个网站来托管你的 PHP 文件。
-
创建网站
- 在 IIS 管理器左侧,右键点击 “网站” (Sites),选择 “添加网站...” (Add Website...)。
- 网站名称:给你的网站起一个名字,"My PHP Site"。
- 物理路径:选择你的 PHP 网站文件所在的文件夹(
C:\inetpub\wwwroot\my-php-site)。 - 类型:选择 “http”。
- IP 地址:通常选择 “全部未分配” (All Unassigned)。
- 端口:默认为
80,80 端口被占用,可以改为其他端口(如8080)。 - 主机名:留空,表示通过 IP 地址直接访问。
- 点击 “确定”。
-
设置默认文档
- 在左侧选中你刚刚创建的网站。
- 在中间窗格中,双击 “默认文档” (Default Documents)。
- 在右侧点击 “添加...”。
- 输入
index.php,然后点击 “确定”。 - 可以使用右侧的“上移/下移”按钮,将
index.php调整到列表的最顶部,这样 IIS 会优先查找它。
-
配置目录权限
- 在左侧选中你的网站。
- 在中间窗格中,双击 “处理程序映射” (Handler Mappings)。
- 在列表中,你应该能看到一个名为
PHP_via_FastCGI的映射,指向php-cgi.exe,这表示配置成功。 - 右键点击你的网站,选择 “编辑权限...”。
- 在 “安全” 选项卡中,确保
IIS_IUSRS和SYSTEM用户都有 “读取” 和 “执行” 权限,如果你的网站需要写入文件(如上传、生成缓存),还需要添加 “写入” 权限。
第四步:测试网站
这是验证所有配置是否正确的最后一步。
-
创建测试文件
- 在你的网站物理路径下(
C:\inetpub\wwwroot\my-php-site),创建一个名为info.php的文件。 - 用记事本或代码编辑器打开它,输入以下内容:
<?php phpinfo(); ?>
- 在你的网站物理路径下(
-
访问测试文件
- 打开浏览器,访问你的网站地址:
- 如果使用默认端口 80:
http://localhost或http://你的服务器IP - 如果使用了其他端口(如 8080):
http://localhost:8080或http://你的服务器IP:8080
- 如果使用默认端口 80:
- 如果一切正常,你应该能看到一个详细的 PHP 信息页面,显示了你的 PHP 版本、配置信息、已加载的模块等。
- 打开浏览器,访问你的网站地址:
-
安全提示
- 测试完成后,请务必删除
info.php文件! 这个文件会暴露服务器的大量敏感信息,是一个严重的安全风险。
- 测试完成后,请务必删除
常见问题与排错
-
问题: 访问
.php文件时,浏览器直接下载文件而不是显示内容。- 原因: FastCGI 处理程序映射没有正确建立。
- 解决: 检查“处理程序映射”中是否存在
PHP_via_FastCGI,如果没有,可以手动添加,或者重新运行 PHP Manager 的注册步骤。
-
问题: HTTP 错误 500.0 - Internal Server Error。
- 原因: 最常见的原因是
php.ini配置错误。 - 解决:
- 检查
php.ini中的语法是否正确,特别是cgi.fix_pathinfo = 1。 - 查看 IIS 的详细错误日志,在 IIS 管理器中,双击 “错误页” (Error Pages),选择 500 状态码,然后点击右侧的 “编辑功能设置...”,将“详细错误”设置为“ true”,这样浏览器会显示更具体的 PHP 错误信息。
- 检查 PHP 扩展(如
php_mysql.dll)是否存在或与 PHP 版本不匹配。
- 检查
- 原因: 最常见的原因是
-
问题: 404.0 - Not Found。
- 原因: 网站物理路径错误,或者文件不存在。
- 解决: 仔细检查网站绑定的“物理路径”是否正确指向你的项目文件夹。
恭喜你!至此,你已经成功在 IIS 7 上配置并发布了一个 PHP 网站。
