Win10下IIS无法正确解析PHP代码:访问phpinfo()显示空白页
IIS运行PHP返回原始文件内容问题排查
在Win10机器上配置IIS运行PHP后,访问index.php时显示空白页,浏览器开发者工具显示返回的是PHP文件原始内容。
测试文件内容:
<?php phpinfo(); ?>
已完成的配置操作:
- 在Windows功能中安装CGI组件
- 将PHP 8.1.2 x86 Non Thread Safe版本解压至
C:\php - 按教程调整
php.ini配置 - 在系统环境变量中添加
C:\php路径 - 在IIS中配置PHP处理程序映射
- 启用IIS的FastCGI模块
启用IIS失败请求跟踪后,日志片段如下:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/> <EventID>0</EventID> <Version>1</Version> <Level>4</Level> <Opcode>43</Opcode> <Keywords>0x0</Keywords> <TimeCreated SystemTime="2022-11-15T15:58:47.038Z"/> <Correlation ActivityID="{8000000A-0005-FF00-B63F-84710C7967BB}"/> <Execution ProcessID="5540" ThreadID="1392"/> <Computer>SRV01</Computer> </System> <EventData> <Data Name="ContextId">{8000000A-0005-FF00-B63F-84710C7967BB}</Data> <Data Name="OldHandlerName"></Data> <Data Name="NewHandlerName">PHP_via_FastCGI</Data> <Data Name="NewHandlerModules">FastCgiModule</Data> <Data Name="NewHandlerScriptProcessor">C:\php\php-cgi.exe</Data> <Data Name="NewHandlerType"></Data> </EventData> <RenderingInfo Culture="de-DE"> <Opcode>HANDLER_CHANGED</Opcode> </RenderingInfo> <ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace"> <EventGuid>{D42CF7EF-DE92-473E-8B6C-621EA663113A}</EventGuid> </ExtendedTracingInfo> </Event>
问题排查及解决步骤
- 检查处理程序映射优先级
确认IIS中*.php的处理程序映射顺序在静态文件映射之前,避免静态文件处理模块先接管请求。可在IIS管理器的站点→处理程序映射→查看排序,调整PHP_via_FastCGI到靠前位置。 - 验证php-cgi.exe可用性
打开命令提示符,执行C:\php\php-cgi.exe -v,若提示缺少vcruntime140.dll等文件,下载安装Visual C++ Redistributable for Visual Studio 2019 x86版本,这是PHP 8.1运行的必要依赖。 - 核对php.ini关键配置
确保php.ini中以下设置正确:
注意cgi.force_redirect = 0 fastcgi.impersonate = 1 extension_dir = "C:\php\ext"php.ini需从解压包中的php.ini-development或php.ini-production重命名而来,避免使用空白配置文件。 - 检查权限设置
- 确保站点应用池的身份(默认是
ApplicationPoolIdentity)对C:\php目录有读取权限,对站点根目录有读取、执行权限。 - 右键
C:\php→属性→安全→添加IIS AppPool\你的应用池名称,赋予读取和执行权限。
- 确保站点应用池的身份(默认是
- 确认FastCGI配置
在IIS管理器的FastCGI设置中,找到指向C:\php\php-cgi.exe的条目:- 点击编辑,在环境变量中添加
PHP_FCGI_MAX_REQUESTS=1000 - 确认“实例最大数”设置合理(默认4即可)
- 点击编辑,在环境变量中添加
- 重启IIS服务
执行命令行iisreset,强制刷新所有IIS配置,确保修改生效。
内容的提问来源于stack exchange,提问作者iTob
相关产品推荐
相关产品推荐

