IIS 10运行PHP报No input file specified故障排查求助
IIS运行PHP返回 No input file specified 排查方案
你已经完成了网上公开的绝大多数常规配置调整、权限配置、重装操作,以下是Windows更新、安装Visual Studio后触发该问题的冷门根因排查项,按优先级操作:
1. 先定位问题出在IIS还是PHP本身
绝大多数你描述的场景(静态文件正常、PHP无错误日志、所有PHP版本都复现),根因都是IIS没有把正确的脚本路径传给FastCGI进程,和PHP配置无关。
先做个最小化测试:
- 新建文本文件,重命名为
test-cgi.bat,写入以下内容:
@echo off echo Content-Type: text/plain echo. echo 传入参数:%* echo SCRIPT_FILENAME值:%SCRIPT_FILENAME% echo PATH_TRANSLATED值:%PATH_TRANSLATED% echo 站点根目录:%DOCUMENT_ROOT%
- 临时把站点处理程序映射里的
scriptProcessor路径改成这个bat文件的全路径 - 访问原php地址,看页面输出的
SCRIPT_FILENAME值:- 如果值为空、或者路径和你实际的php文件物理路径不一致,问题出在IIS的FastCGI配置/系统组件拦截
- 如果值是正确的文件路径,问题出在PHP运行时权限
2. 修复IIS侧常见问题
- 先确认Windows功能里的CGI组件已启用:打开「启用或关闭Windows功能」,找到「Internet Information Services→万维网服务→应用程序开发功能→CGI」,确保勾选,这个组件会在部分Windows累积更新后被自动禁用,哪怕你重装IIS如果没手动勾选也不会默认安装
- 打开服务器级别的「FastCGI设置」,选中你用的php-cgi.exe条目编辑:
- 实例模式选
Normal,不要选SiteWide - 环境变量里的
PHPRC值去掉结尾的反斜杠,把C:\PHP80\改成C:\PHP80,结尾反斜杠会转义配置字符串的闭合引号,导致PHP读取配置异常 - 标准错误模式设为
IgnoreAndReturn200
- 实例模式选
- 打开站点处理程序映射,编辑*.php的映射规则,把
resourceType从Either改成File,确认「请求限制」里勾选了「仅当请求映射到以下内容时调用:文件」 - 如果你装VS2022时附带安装了ARR(Application Request Routing)、旧版URL重写模块,去IIS的模块列表里临时禁用这两个模块,部分版本的ARR会在FastCGI执行前篡改脚本路径,导致参数丢失
- 操作完用管理员权限执行命令
iisreset重启IIS服务
3. 排查系统安全组件拦截
安装VS2022或Windows 11 21H2后的安全更新,会默认调整Exploit Protection规则,和非线程安全版PHP存在兼容问题:
- 打开「Windows安全中心→应用和浏览器控制→Exploit Protection设置→程序设置」
- 找到
w3wp.exe和php-cgi.exe的自定义规则,全部删除,恢复系统默认设置;如果没有自定义规则,临时关闭全局的「强制DEP(数据执行保护)」「强制ASLR(地址空间布局随机化)」测试 - 检查第三方杀毒/安全软件有没有对FastCGI进程、php-cgi.exe的脚本读取行为做拦截,临时退出安全软件测试
4. 隐式权限问题排查
你虽然给了everyone权限,但两个容易遗漏的权限点会导致该问题且不触发PHP日志:
- 检查
C:\Windows\Temp目录权限,确保当前站点使用的应用程序池标识(默认是IIS AppPool\DefaultAppPool)有该目录的读写权限,PHP FastCGI初始化时必须在该目录创建临时文件,权限不足会直接返回No input file specified - 把站点目录从用户目录、OneDrive同步目录、NTFS加密目录移到非系统盘的纯英文路径(比如
D:\www\test),这类目录就算给了everyone权限,IIS进程也可能因为目录遍历权限被限制拿不到文件 - 临时把应用程序池的标识改成
LocalSystem,托管管道模式改成「经典」测试,排除应用程序池权限问题
5. PHP配置修正
- 把php.ini里的
doc_root参数直接注释(行首加;),不要设值也不要留空 - 确保
cgi.fix_pathinfo=1、cgi.force_redirect=0、fastcgi.impersonate=1三个参数配置正确,你现有配置里这三个是对的,不需要改
内容的提问来源于stack exchange,提问作者joanolo
相关产品推荐
相关产品推荐

