PHP在Windows Server上需手动解压、配置php.ini、安装对应VC运行时,并通过PHPRC环境变量确保IIS FastCGI正确加载配置;关键步骤包括选TS版、设extension_dir、配date.timezone、添加PHPRC=C:\PHP。

PHP 在 Windows Server 上不提供“一键安装包”,官方只发布 zip 归档包,必须手动解压、配置、注册为服务(如需)并集成到 Web 服务器(如 IIS 或 Apache)。直接运行安装程序的选项不存在。
下载 PHP:认准 VC 和线程安全版本
Windows Server 上 PHP 的运行依赖 Visual C++ 运行时和正确的编译标识。错误的组合会导致 php.exe 启动失败或扩展加载报错(如 0xc000007b)。
- 访问 https://www.php.cn/link/a9a2c061a1c2743d489c6863eae6725a,选择 Thread Safe (TS) 版本(IIS + FastCGI 必须用 TS;Apache + mod_php 也推荐 TS)
- 匹配你的系统架构:
php-8.3.12-Win32-vs17-x64.zip表示 VS2022 编译、x64、线程安全 —— 对应 Windows Server 2016+ 推荐此版 - 务必安装对应版本的
Microsoft Visual C++ Redistributable(页面下方有链接),例如vc_redist.x64.exe(VS2022)
解压与基础配置:别跳过 php.ini
解压后目录默认无 php.ini,必须从 php.ini-development 或 php.ini-production 复制并重命名,否则所有配置(如扩展、时区、内存限制)均无效。
- 将
php-8.3.12-Win32-vs17-x64解压到固定路径,例如C:\PHP\(避免空格和中文路径) - 复制
php.ini-development→php.ini;若用于生产,改用php.ini-production并手动调整 - 编辑
php.ini,关键项必须显式设置:extension_dir = "C:\PHP\ext" date.timezone = "Asia/Shanghai" memory_limit = 256M display_errors = Off log_errors = On
-
extension_dir路径必须是绝对路径且指向真实存在的ext文件夹,反斜杠需双写或使用正斜杠
让 IIS 识别 PHP:FastCGI 设置不能只靠 GUI
IIS 管理器界面添加 FastCGI 应用程序时,仅填 php-cgi.exe 路径不够,环境变量缺失会导致扩展加载失败(如 pdo_mysql 找不到 DLL)。
立即学习“PHP免费学习笔记(深入)”;
- 在 IIS 管理器 → “FastCGI 设置” → “添加应用程序”:
- 完整路径填:
C:\PHP\php-cgi.exe - 在“环境变量”里手动添加:
PHPRC=C:\PHP\(强制指定php.ini位置) - 可选加:
PATH=C:\PHP;C:\PHP\ext(确保 DLL 能被找到)
- 完整路径填:
- 站点 → “处理程序映射” → 添加模块映射:
- 请求路径:
*.php - 模块:
FastCgiModule - 可执行文件:
C:\PHP\php-cgi.exe - 名称:
PHP_via_FastCGI
- 请求路径:
- 验证:新建
C:\inetpub\wwwroot\info.php,内容为,浏览器访问确认输出中Loaded Configuration File指向你设置的php.ini
常见启动失败原因:优先查这三处
PHP 命令行或 IIS 下报错但无明确提示时,90% 是以下三个点之一没对齐:
-
php-cgi.exe报0xc000007b:VC 运行时未装或位数不匹配(x64 PHP 必须配 x64 vc_redist) -
php --version显示PHP Startup: Unable to load dynamic library:检查extension_dir路径是否拼错、DLL 文件是否存在、是否启用了非 TS 版扩展(如php_pdo_mysql.dll在 TS 环境下可用,但php_pdo_mysql_nts.dll不行) - IIS 访问
.php返回 500 且事件查看器无日志:FastCGI 环境变量PHPRC缺失,导致 PHP 用默认路径找php.ini,从而关闭错误显示、不加载扩展
Windows Server 上跑 PHP,核心不是“装没装上”,而是“配置有没有穿透到每个执行上下文”——命令行、IIS FastCGI、计划任务调用,各自可能读取不同的 php.ini,PHPRC 环境变量是最可靠的锚点。











