IIS站点级PHP管理器不显示PHP版本 手动添加报错如何解决
IIS站点PHP 500.0 脚本处理器找不到、站点级PHP管理器无版本、手动添加报对象状态错误修复方案
按以下优先级排查操作,90%以上的同类问题可在前两步解决:
- 第一步:校验应用程序池架构匹配
- 打开IIS管理器,选中服务器节点,进入PHP管理器,记录已注册PHP版本的架构(x86/x64)
- 选中报错站点,右侧「操作」栏点击「基本设置」,记录站点绑定的应用程序池名称
- 左侧节点选中「应用程序池」,找到对应程序池右键打开「高级设置」,找到「启用32位应用程序」项:如果已注册PHP为64位,该项必须设为
False;如果是32位PHP,该项必须设为True。
架构不匹配是该问题的最高发诱因,会直接导致服务器级PHP配置无法继承到站点、FastCGI处理器无法被站点识别,触发对应三类报错。
- 第二步:清理站点级无效handler配置,修复配置继承
- 回到服务器节点,打开「处理程序映射」功能,找到对应PHP版本的FastCGI映射,确认可执行文件路径指向真实存在的
php-cgi.exe,条目状态为启用 - 打开报错站点根目录下的
web.config文件,检查<handlers>节点下是否存在残留的、路径错误的PHP脚本处理器配置,找到后直接删除对应条目;如果存在<location path="." inheritInChildApplications="false">类锁定配置继承的节点,临时调整为允许handler配置继承
站点级残留的无效配置会阻断服务器级PHP配置的正常下发,直接导致站点级PHP管理器读取不到可用版本。
- 回到服务器节点,打开「处理程序映射」功能,找到对应PHP版本的FastCGI映射,确认可执行文件路径指向真实存在的
- 第三步:重新注册FastCGI配置修复WPI安装损坏
以管理员身份打开命令提示符,执行以下命令重新注册PHP的FastCGI进程(注意替换命令里的php-cgi.exe路径为你实际的PHP安装路径):
执行完成后运行%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /+"[fullPath='C:\Program Files\PHP\v8.1\php-cgi.exe',maxInstances='4',idleTimeout='300',activityTimeout='30',requestTimeout='90',instanceMaxRequests='10000',protocol='NamedPipe',flushNamedPipe='False']" /commit:apphostiisreset重启IIS服务,再重新打开站点级PHP管理器即可看到正常继承的PHP版本,无需手动添加。 - 第四步:校验目录权限
给PHP安装目录、站点根目录添加IIS_IUSRS用户组的读取、执行权限,权限不足会导致PHP管理器无法读取php-cgi.exe文件状态,触发「对象当前状态无效」的报错。
修复验证:在站点根目录创建内容为
<?php phpinfo(); ?>的测试文件,访问该文件如果能正常显示PHP版本信息页,即修复完成。
内容的提问来源于stack exchange,提问作者bloodedark
相关产品推荐
相关产品推荐

