将php-cgi.exe关联IIS的PHP Manager扩展时提示对象状态无效错误
IIS单站点启用PHP报错的解决方案
问题根因定位
- 该报错本质是站点级的
web.config配置存在冲突,或者站点对处理程序映射的继承规则被手动阻断,全局PHP配置无法下沉到站点生效 - 由于全局PHP运行正常,可排除PHP本身安装、
php-cgi.exe路径错误、Cgi模块未安装等基础问题
分步修复方案
第一步:恢复站点配置继承
- 选中报错的站点,打开IIS管理器的「功能视图」,找到「处理程序映射」
- 点击右侧操作栏的「还原为父项」,确认操作后,站点的处理程序映射会恢复继承全局配置
- 回到站点的PHP Manager,再次尝试启用PHP,此时大概率不会再抛出状态无效报错
第二步:手动添加映射规则
如果执行第一步后仍报错,手动添加处理程序映射:
- 点击站点「处理程序映射」右侧的「添加模块映射」,填写以下参数:
- 请求路径:
*.php - 模块:
FastCgiModule - 可执行文件:填写和全局配置一致的
php-cgi.exe完整路径 - 名称:
PHP_via_FastCGI(可自定义)
- 请求路径:
- 点击「请求限制」,切换到「映射」标签,确认勾选「仅当请求映射到以下内容时才调用处理程序」,选择「文件或文件夹」,保存全部配置
第三步:排查站点配置冲突
- 进入站点根目录,找到
web.config文件,查看是否存在手动编写的<handlers>节点规则覆盖了全局配置 - 如果存在异常的PHP相关映射规则,删除对应节点后保存,重启站点即可生效
500错误验证
完成以上配置后,在站点根目录新建phpinfo.php文件,写入代码:
<?php phpinfo(); ?>
访问该文件,如果正常返回PHP信息则配置完成,若仍报500可检查站点对应应用程序池的.NET版本、站点目录权限是否给了IIS_IUSRS组读取和执行权限。
内容的提问来源于stack exchange,提问作者devwannabe19
相关产品推荐
相关产品推荐

