IIS 配置 PHP 完整教程
本教程将引导您完成在 Windows 的 IIS (Internet Information Services) Web 服务器上安装和配置 PHP 运行环境的所有步骤。

目录
- 准备工作
- 安装 IIS 和 URL 重写模块
- 下载并解压 PHP
- 配置 PHP (php.ini)
- 在 IIS 中注册 PHP 处理程序
- 测试 PHP 是否工作
- 配置更友好的 URL (伪静态)
- 常见问题与解决方案
准备工作
在开始之前,请确保您已经:
- 一台 Windows 服务器或 PC:操作系统可以是 Windows Server 2012 R2/2025/2025/2025,或 Windows 10/11。
- 管理员权限:您需要拥有管理员权限来安装组件和修改配置。
- PHP 官方下载包:访问 PHP 官方下载页面。
- 推荐选择:选择 Thread Safe (TS) 版本,这对于 IIS 和大多数 PHP 应用(如 WordPress)来说是标准且兼容性最好的选择。
- 选择架构:根据您的系统选择 x86 (32位) 或 x64 (64位),现代系统推荐使用 x64。
- 下载格式:下载 ZIP 压缩包,
php-8.2.12-nts-Win32-vs16-x64.zip或php-8.2.12-nts-Win32-vs16-x64.zip,我们使用 ZIP 包是因为它更灵活,无需安装程序。
安装 IIS 和 URL 重写模块
如果您的系统上还没有安装 IIS,请按以下步骤操作:
- 打开服务器管理器:在 Windows 开始菜单中搜索“服务器管理器”并打开。
- 添加角色和功能:
- 在仪表板中,点击“添加角色和功能”。
- 点击“下一步”,直到到达“角色”页面。
- 选择 Web 服务器角色:
- 在角色列表中,勾选 Web 服务器 (IIS)。
- 当弹出“添加功能 required for Web Server”时,点击“添加功能”,然后点击“下一步”。
- 安装 IIS:
- 在“角色服务”页面,保持默认选择即可(这些是基本的服务组件),直接点击“下一步”。
- 确认摘要信息无误后,点击“安装”。
- 安装 URL 重写模块:
- 这个模块对于配置伪静态(如 WordPress 的固定链接)至关重要。
- 访问 Microsoft URL Rewrite Module 官方下载页面。
- 下载适用于您系统的版本(通常是 x64 的 MSI 安装包)。
- 运行下载的安装包,按照向导完成安装。
下载并解压 PHP
- 创建 PHP 目录:为了方便管理,建议在 C 盘根目录下创建一个名为
php的文件夹。C:\php。 - 解压 PHP:
- 将您从官网下载的 PHP ZIP 压缩包解压到
C:\php目录中。 - 解压后,您应该能看到
php-cgi.exe,php.ini-development等文件。
- 将您从官网下载的 PHP ZIP 压缩包解压到
配置 PHP (php.ini)
php.ini 是 PHP 的核心配置文件,您需要对其进行一些基本设置。
-
重命名配置文件:
(图片来源网络,侵删)- 进入
C:\php目录。 - 将
php.ini-development文件重命名为php.ini,对于生产环境,推荐使用php.ini-production,但开发环境使用php.ini-development也可以,它包含了更多的调试信息。
- 进入
-
编辑
php.ini文件:-
使用记事本或更专业的编辑器(如 VS Code、Notepad++)打开
php.ini。 -
查找并修改以下几项关键配置(可以使用
Ctrl+F搜索): -
启用 PHP 扩展:找到
;extension_dir = "ext"这一行,去掉前面的分号 ,并确保路径正确。
(图片来源网络,侵删)extension_dir = "ext"
-
启用常用扩展:根据您的需求,去掉相应扩展名前的分号 来启用它们,要连接 MySQL 数据库,需要启用
mysqli和pdo_mysql。;extension=curl ;extension=fileinfo ;extension=gd ;extension=mbstring ;extension=mysqli ;extension=openssl ;extension=pdo_mysql ;extension=sockets
修改后如下:
extension=curl extension=fileinfo extension=gd extension=mbstring extension=mysqli extension=openssl extension=pdo_mysql extension=sockets
-
配置时区:找到
;date.timezone =这一行,去掉分号并设置为您所在的时区。date.timezone = Asia/Shanghai
-
上传文件大小限制:修改
upload_max_filesize和post_max_size的值。upload_max_filesize = 32M post_max_size = 32M
-
-
保存并关闭
php.ini文件。
在 IIS 中注册 PHP 处理程序
这是最关键的一步,告诉 IIS 如何处理 .php 文件。
-
打开 IIS 管理器:
在 Windows 开始菜单中搜索“IIS”并打开“Internet Information Services (IIS) 管理器”。
-
打开处理程序映射:
- 在左侧的“连接”面板中,点击您的服务器名称。
- 在中间的“管理”区域,双击 “处理程序映射”。
-
添加模块映射:
- 在右侧的“操作”面板中,点击 “添加模块映射...”。
-
填写映射信息:
- 请求路径:输入
*.php。 - 模块:从下拉列表中选择
FastCgiModule。 - 可执行文件:点击右侧的“浏览...”,然后导航到
C:\php\php-cgi.exe并选择它。 - 名称:可以输入一个描述性名称,
PHP_via_FastCGI。 - 确保“请求限制”为空。
- 请求路径:输入
-
确定:
- 点击“确定”。
- 系统可能会弹出一个警告,提示“如果尚未为 FastCGI 处理程序安装可执行文件,则将无法处理请求”,这很正常,因为我们下一步就要配置它,点击“是”继续。
-
配置 FastCGI 设置:
- 在 IIS 管理器左侧,点击您的服务器名称。
- 在中间的“管理”区域,双击 “FastCGI 设置”。
- 在右侧的“操作”面板中,点击 “添加应用程序...”。
- 填写 FastCGI 应用程序信息:
- 完整路径:再次浏览并选择
C:\php\php-cgi.exe。 - 实例模板:留空。
- 环境变量:点击“...”按钮,添加一个环境变量。
- 变量名:
PHP_INI_SCAN_DIR - 变量值:
C:\php\ - 这个变量告诉 PHP 去哪个目录下查找
php.ini文件,非常重要!
- 变量名:
- 完整路径:再次浏览并选择
- 点击“确定”保存。
至此,PHP 在 IIS 中的配置已经完成。
测试 PHP 是否工作
现在我们来验证 PHP 是否能正常解析和执行。
-
创建测试网站:
- 在 IIS 管理器左侧,右键点击“站点”,选择“添加网站...”。
- 网站名称:输入一个名称,如
Test PHP。 - 物理路径:选择一个用来存放网站文件的文件夹,
C:\inetpub\wwwroot\testphp。 - 端口:保持默认的
80。 - 点击“确定”。
-
创建 PHP 信息页:
- 进入
C:\inetpub\wwwroot\testphp文件夹。 - 创建一个新的文本文件,将内容修改为:
<?php phpinfo(); ?>
- 将此文件另存为
info.php。
- 进入
-
访问测试页面:
- 打开浏览器,在地址栏输入
http://localhost/info.php或http://您的服务器IP/info.php。 - 如果您看到了一个包含大量 PHP 配置信息的页面(包括 PHP 版本、已加载的模块等),那么恭喜您,PHP 已经成功配置并运行了!
- 打开浏览器,在地址栏输入
配置更友好的 URL (伪静态)
许多 PHP 应用(如 WordPress、Magento)需要友好的 URL 结构,这需要 URL 重写模块来实现。
-
在网站中打开 URL 重写:
- 在 IIS 管理器中,选择您刚才创建的
Test PHP网站。 - 在中间的“管理”区域,双击 “URL 重写”。
- 在 IIS 管理器中,选择您刚才创建的
-
添加入站规则:
- 在右侧的“操作”面板中,点击 “添加规则...”。
- 选择 “空白规则”,然后点击“确定”。
-
配置规则:
- 名称:输入一个名称,如
WordPress Permalinks。 - 匹配 URL:
- 模式:输入 ,这是一个通配符,可以匹配任何请求。
- 忽略大小写:勾选此项。
- 条件:
- 点击“添加...”。
- 输入的条件:
{REQUEST_FILENAME} - 运算符:
Is Not File - 检查如果输入字符串:
Pattern
- 操作:
- 操作类型:
Rewrite - URL:输入
index.php/{R:1},这会将所有不对应于实际文件的请求重定向到index.php并传递原始路径作为参数。
- 操作类型:
- 点击“应用”保存。
- 名称:输入一个名称,如
您的网站就支持伪静态了,具体规则需要根据您使用的 PHP 应用程序(如 WordPress)的官方文档进行调整。
常见问题与解决方案
-
HTTP 错误 500.19 - Internal Server Error
- 原因:通常是权限问题,IIS 的应用程序池用户(通常是
IIS_IUSRS或SYSTEM)没有读取php.ini或 PHP 扩展(在ext文件夹中)的权限。 - 解决:
- 右键点击
C:\php文件夹,选择“属性” -> “安全”。 - 点击“编辑”,然后添加
IIS_IUSRS用户。 - 为该用户赋予“读取和执行”、“列出文件夹内容”、“读取”权限。
- 对
C:\php\ext文件夹重复此操作。
- 右键点击
- 原因:通常是权限问题,IIS 的应用程序池用户(通常是
-
HTTP 错误 500.0 - Internal Server Error / FastCGI 进程意外退出
- 原因:通常是
php.ini文件配置有误,或者某个 PHP 扩展与您的 PHP 版本不兼容。 - 解决:
- 检查
php.ini文件中是否有语法错误(缺少引号、分号等)。 - 临时将
php.ini中启用的扩展全部注释掉(在行首加 ),然后测试,如果恢复正常,说明是某个扩展的问题,逐个启用排查。 - 确保下载的 PHP 扩展(.dll 文件)与您的 PHP 版本和架构(VC版本、x86/x64)完全匹配。
- 检查
- 原因:通常是
-
浏览器直接下载 PHP 文件,而不是显示内容
- 原因:IIS 没有正确注册
.php文件的映射。 - 解决:返回 步骤五,仔细检查“处理程序映射”中是否存在
*.php的映射,并且可执行文件路径是否正确指向php-cgi.exe。
- 原因:IIS 没有正确注册
-
phpinfo()显示的 Loaded Configuration File 路径不正确- 原因:PHP 没有找到您修改的
php.ini文件。 - 解决:确保您在 步骤六 的“FastCGI 设置”中正确添加了环境变量
PHP_INI_SCAN_DIR,其值为C:\php\,这是最可靠的指定php.ini位置的方法。
- 原因:PHP 没有找到您修改的
希望这份详细的教程能帮助您成功在 IIS 上运行 PHP!如果您在配置过程中遇到任何问题,可以参考上述的常见问题解决方案,或在评论区提问。
