如何在IIS 10中运行PHP 8.1项目_安装FastCGI模块与处理程序映射

阿萱吖_6979

阿萱吖_6979

2026-05-08

338人浏览

原创

IIS 10 必须启用 CGI 功能,因为 FastCGI 模块依赖系统级 CGI 支持组件;未启用时,“FastCGI 设置”节点不显示、FastCgiModule 不可用,导致 .php 请求返回 500.19 或 404 错误。

如何在iis 10中运行php 8.1项目_安装fastcgi模块与处理程序映射

必须用 Non Thread Safe(NTS)版本的 PHP 8.1,且 IIS 的 CGI 功能必须提前启用,否则 php-cgi.exe 根本无法被加载或响应请求。

为什么 IIS 10 必须启用 CGI 功能才能运行 PHP

FastCGI 是独立于 IIS 工作进程的外部进程模型,它依赖 Windows 系统级的 CGI 支持组件。如果没开 CGI,IIS 管理器里压根不会显示“FastCGI 设置”节点,FastCgiModule 也会处于不可用状态 —— 此时即使手动添加处理程序映射,访问 .php 文件只会返回 500.19 错误或直接 404。

启用方式(管理员权限):

  • 打开“控制面板 → 程序与功能 → 启用或关闭 Windows 功能”
  • 展开“Internet Information Services → Web 管理工具 → IIS 管理控制台”,确保勾选
  • 展开“Internet Information Services → 应用程序开发功能”,**必须勾选“CGI”**(不是“ASP”或“ISAPI”)
  • 点击确定,等待安装完成,重启 IIS(iisreset /restart)

PHP 8.1 安装路径与 fastcgi.impersonate 配置要点

下载地址是 https://windows.php.net/download/,务必选中带 Non Thread Safe 和对应架构(如 VS16 x64 NTS)的 ZIP 包,解压到无空格、无中文的路径,例如 C:\php-8.1.26-nts。

关键配置在 php.ini(由 php.ini-development 复制重命名而来):

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载
  • fastcgi.impersonate = 1 —— 必须开启,否则 PHP 脚本以 ApplicationPoolIdentity 运行,无法读取网站目录下用户上传的文件或写 session
  • cgi.force_redirect = 0 —— FastCGI 模式下必须关闭重定向,否则所有请求会 502
  • extension_dir = "ext" 或绝对路径如 extension_dir = "C:\php-8.1.26-nts\ext"
  • date.timezone = Asia/Shanghai —— 避免 PHP Warning: Unknown: It is not safe to rely on the system's timezone settings
  • 临时目录需显式设置且赋予 IIS_IUSRS 写权限:upload_tmp_dir = C:\Windows\Temp、session.save_path = C:\Windows\Temp

FastCGI 设置与处理程序映射的精确参数

这两步必须严格匹配,否则会出现 500.0、500.19 或空白响应:

  • 在 IIS 管理器服务器节点 → “FastCGI 设置” → “添加应用程序”
  • 完整路径 填: C:\php-8.1.26-nts\php-cgi.exe
  • “常规”选项卡中:监视对文件所做的更改 设为 C:\php-8.1.26-nts\php.ini;活动状态时间限制 建议设为 300(避免长请求被杀)
  • 网站节点 → “处理程序映射” → “添加模块映射”
  • 请求路径: *.php
  • 模块: FastCgiModule(注意拼写,不是 FastCGIModule)
  • 可执行文件:和上面完全一致,即 C:\php-8.1.26-nts\php-cgi.exe
  • 名称:建议填 PHP_via_FastCGI,便于识别
  • 务必勾选 仅限脚本(否则可能触发安全警告或拒绝服务)

测试失败时最该检查的三处地方

很多配置看似完成,但 info.php 打不开,常见卡点就这三处:

  • php-cgi.exe -i 在命令行执行是否输出 phpinfo?如果报错“找不到 VCRUNTIME140.dll”,说明缺少 Visual C++ 2015–2022 运行库,需安装 vc_redist.x64.exe
  • IIS 应用程序池的 .NET CLR 版本必须设为 无托管代码(不是 v4.0 或 v2.0),否则 FastCGI 启动失败
  • PHP 安装目录(如 C:\php-8.1.26-nts)和网站物理路径,都必须给 IIS_IUSRS 用户至少“读取 & 执行”权限;若用 session 或上传,还需“写入”权限

真正容易被忽略的是权限继承问题:即使你给网站根目录加了 IIS_IUSRS 权限,PHP 安装目录默认是拒绝继承的,必须手动右键属性 → 安全 → 编辑 → 添加并勾选权限。这点不处理,500.19 错误会一直卡在“无法读取配置文件”上。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php iis

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

12084

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

6921

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2195

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

4408

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

5114

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

4031

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

5817

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

4562

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

12402

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习