iis 10 可为不同站点分配独立 php 版本,通过绑定专属 fastcgi 应用、配置独立 web.config 处理器映射及应用池隔离实现;需手动部署多版本 php 目录、分别注册 fastcgi 条目并设置 phprc,再按站点精确配置 scriptprocessor 路径。

Windows IIS 10 支持为不同站点分配独立的 PHP 版本,但不是靠“切换全局 PHP”,而是通过 为每个站点绑定专属 FastCGI 应用 + 独立 web.config 处理器映射 实现的。关键在于路径隔离、处理器解耦、应用池隔离三者配合,避免版本冲突。
准备多个 PHP 8.4.x 子版本目录
PHP 官方不提供多版本并存安装包,需手动解压多个独立副本(注意:必须是同主版本下的微调版,如 8.4.1 和 8.4.3,不建议跨小版本混用):
- 下载两个 PHP 8.4.x Windows x64 NTS ZIP 包(例如 php-8.4.1 和 php-8.4.3),分别解压到不同路径,如:
C:\php\php-8.4.1\ 和 C:\php\php-8.4.3\ - 每个目录内复制 php.ini-development 为 php.ini,并确认以下基础项已设置:
cgi.fix_pathinfo=0(必设)、extension_dir = "C:\php\php-8.4.x\ext"、date.timezone = Asia/Shanghai - 为每个目录单独安装 VC++ 2022 Redistributable x64(一次安装即可,所有 PHP 共享)
为每个 PHP 版本注册独立 FastCGI 应用
IIS 的 FastCGI 设置支持多个 php-cgi.exe 条目共存,路径不同即视为不同应用:
- 打开 IIS 管理器 → 左侧服务器节点 → 双击「FastCGI 设置」
- 右侧点击「添加应用程序」→「完整路径」填入第一个版本:
C:\php\php-8.4.1\php-cgi.exe - 双击刚添加的条目 → 「环境变量」→ 添加:
PHPRC=C:\php\php-8.4.1\(强制指定 php.ini 路径)PHP_FCGI_MAX_REQUESTS=10000 - 重复上述步骤,添加第二个版本:
C:\php\php-8.4.3\php-cgi.exe,并配置对应 PHPRC - 确保两个条目的「监视重启」和「活动状态」均为 True;若为 False,右键 →「重新启用」
为各站点配置专属 web.config 映射
每个网站根目录下的 web.config 必须精确指向其目标 PHP 版本的 php-cgi.exe,不可复用或省略:
- 站点 A(需 PHP 8.4.1)根目录下新建或编辑
web.config,确保<handlers></handlers>中有且仅有一条匹配:<add name="PHP841" path="*.php" verb="*" modules="FastCgiModule" scriptprocessor="C:\php\php-8.4.1\php-cgi.exe" resourcetype="Either" requireaccess="Script"></add> - 站点 B(需 PHP 8.4.3)的
web.config中对应 handler 的scriptProcessor必须为:C:\php\php-8.4.3\php-cgi.exe,名称(name)也建议区分,如PHP843 - 检查两个文件中 handler 的
enabled="true",且无其他同名或通配冲突的 handler 覆盖
验证与隔离要点
完成配置后,需逐站验证,防止“看似正常实则错配”:
- 在每个站点根目录放一个
info.php(内容:<?php phpinfo(); ?>) - 分别访问
http://site-a.local/info.php和http://site-b.local/info.php - 查看页面顶部 PHP Version 和 Server API 行,确认版本号与预期一致,且 Server API 显示
CGI/FastCGI - 检查
Loaded Configuration File路径是否指向各自 PHPRC 指定的 php.ini,而非系统默认或其他版本路径 - 推荐将两个站点部署在不同 应用池 下(.NET CLR 版本选“无托管代码”,管道模式选“集成”),进一步隔离运行时环境
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











