---
title: "ColdFusion 跑在 IIS 上？先查有没有遗留 PHP，再安全卸掉 - Angryecho"
description: "如果你在 Windows＋IIS 上跑 ColdFusion 或 Lucee，却从没主动装过 PHP，仍有可能服务器上留着 phpMyAdmin 或全局 PHP 处理程序。"
canonical_url: "https://www.angryecho.com/c/php/p/P2TBBowCn29t5yhC0fEdp"
meta:
  "og:description": "如果你在 Windows＋IIS 上跑 ColdFusion 或 Lucee，却从没主动装过 PHP，仍有可能服务器上留着 phpMyAdmin 或全局 PHP 处理程序。"
  "og:image": "https://www.angryecho.com/_og/d/c_Post%2Ctitle_~5ZCQ5qe9572R%2Cdescription_~5ZCQ5qe95LiA5LiL77yM5bCx5LiK5ZCQ5qe9572R44CC%2CpostId_P2TBBowCn29t5yhC0fEdp%2Crevision_~MjAyNi0xMC0yN1QwMjo1Nzo0OS4yMjMzNTBa%2Cp_Ii9jL3BocC9wL1AyVEJCb3dDbjI5dDV5aEMwZkVkcCI%2Cs_-3l2Ft5SCtlvuTny.png"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "ColdFusion 跑在 IIS 上？先查有没有遗留 PHP，再安全卸掉"
---

> Index of every page on this site: [llms.txt](https://www.angryecho.com/llms.txt)

# **ColdFusion 跑在 IIS 上？先查有没有遗留 PHP，再安全卸掉**

如果你在 Windows＋IIS 上跑 ColdFusion 或 Lucee，却从没主动装过 PHP，仍有可能服务器上留着 phpMyAdmin 或全局 PHP 处理程序。独立站长 Gregory Alexander 在 **2026 年 10 月 23 日**的博文里，记录了自己被「整站 multipart 防护」误伤登录页之后，用几段 PowerShell 把遗留 PHP 找干净并移除的过程。下面按运维可读的顺序整理——**只谈检查与卸载，不展开任何漏洞利用细节。**

## 为什么 ColdFusion 站点会撞上 PHP 规则

**2026 年 10 月 21 日**前后，PHP 侧发布紧急补丁（文中点名的修复版本包括 8.5.12、8.4.27、8.3.36、8.2.35 等）。部分主机商用 IIS 全局 URL Rewrite 做临时缓解：按内容类型拦截 `multipart/form-data`。规则若作用在**整台服务器所有站点、所有路径**，ColdFusion 的登录、图片与文件上传同样会 403——即便站点一行 PHP 都没有。

作者把规则收窄到仅匹配 `.php` 地址后，CF 表单恢复。接着他发现多年前为管 MySQL 装的 phpMyAdmin 仍在站点目录里，登录页还对着公网。主机确认不再使用 PHP 后关掉全局规则；作者则把「还有没有 PHP」当成例行体检。

## 准备工作

- Windows 服务器，管理员 PowerShell。
- 知道站点物理路径（下文示例用 `C:\inetpub\wwwroot`，请换成你的站点根）。
- 先确认业务**确实不依赖**任何 PHP 应用；若主机代装了面板自用 PHP，卸之前先问主机。

## 操作步骤

### 1、看 IIS 会不会把 `.php` 交给 PHP

```powershell
Import-Module WebAdministration
Get-WebHandler -PSPath 'IIS:\Sites' | Where-Object { $_.path -like '*.php' } | Select-Object name, path, scriptProcessor
```

- **做什么**：列出路径模式含 `*.php` 的处理程序。
- **为什么**：没有 handler，IIS 就不会跑 PHP；有输出则记下 `name` 与 `scriptProcessor`，后面删除要用。
- **怎么确认成功**：无输出＝当前继承配置下不跑 PHP；有类似 `FastCGI *.php C:\php\php-cgi.exe` 的行＝仍挂着。

### 2、扫站点里有没有 `.php` 文件

大目录用 `dir` 比 `Get-ChildItem -Recurse` 更快：

```powershell
cmd /c "dir C:\inetpub\wwwroot\*.php /s /b" 2>$null | Measure-Object | Select-Object Count
```

按文件夹汇总、以及按修改时间看最近变动：

```powershell
cmd /c "dir C:\inetpub\wwwroot\*.php /s /b" 2>$null | ForEach-Object { Split-Path $_ -Parent } | Group-Object | Sort-Object Count -Descending | Select-Object -First 25 Count, Name | Format-Table -AutoSize

cmd /c "dir C:\inetpub\wwwroot\*.php /s /b" 2>$null | Get-Item | Sort-Object LastWriteTime -Descending | Select-Object -First 15 LastWriteTime, Length, FullName | Format-Table -AutoSize
```

- **做什么**：计数、定位目录、看最近改动的 PHP 文件。
- **为什么**：遗留 phpMyAdmin、面板残骸，或上传目录里异常脚本，都会以 `.php` 现身。
- **怎么确认成功**：Count 为 0；若非 0，应能指出具体文件夹。作者案例里曾扫到约 4500 个文件，集中在两处 phpMyAdmin。

若出现不认识、散落在上传／图片目录、或近期被改过的 PHP 文件，先当可疑入侵处理，再谈「清理遗留」。

### 3、看进程与安装目录（辅助）

```powershell
Get-Process php* -ErrorAction SilentlyContinue | Select-Object Name, Id, StartTime
Test-Path C:\php
```

没有 `php-cgi` 进程只说明最近没人点 PHP 页；**仍以第 1 步 handler 为准**（IIS 按需拉起）。

### 4、从外网看常见入口是否还开着

把域名换成自己的，探测常见路径是否 200：

```powershell
foreach ($path in "phpmyadmin/", "phpMyAdmin/", "pma/", "info.php") {
    $url = "https://www.example.com/$path"
    try { $r = Invoke-WebRequest $url -UseBasicParsing -TimeoutSec 15; "$($r.StatusCode) $url" }
    catch { "$($_.Exception.Response.StatusCode.value__) $url" }
}
```

公网还能打开的 phpMyAdmin 登录页，等于长期暴露数据库管理面。

### 5、确认无依赖后，按顺序卸干净

1. **备份 IIS 配置**（可一键还原）：

```powershell
& "$env:windir\System32\inetsrv\appcmd.exe" add backup "before-php-removal"
```

2. **移走** phpMyAdmin 等 PHP 应用（先挪到私有目录，勿直接删；配置里可能有库密码）。文件占用时再短暂停 IIS： `iisreset /stop` → 移动 → `iisreset /start`。之后可用 HeidiSQL、MySQL Workbench 等桌面工具经 RDP 管库。
3. **在服务器级请求筛选里禁止** `**.php**`** 扩展**（任何站点访问 `.php` 都会在进 handler 前被拒）：

```powershell
Add-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/security/requestFiltering/fileExtensions' -Name '.' -Value @{ fileExtension = '.php'; allowed = 'false' }
```

4. **删 handler 与 FastCGI 项**（名称与路径用第 1 步记下的值替换）：

```powershell
Remove-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/handlers' -Name '.' -AtElement @{ name = 'FastCGI' }
Remove-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/fastCgi' -Name '.' -AtElement @{ fullPath = 'C:\php\php-cgi.exe' }
```

再跑一遍第 1 步，应无输出。

5. **最后**才卸载 PHP：控制面板卸安装包，或把 `C:\php` 先改名为 `C:\php-removed` 观察数周。主机代装的先征得同意。

若必须保留主机的缓解规则，把它的匹配从「所有 URL」改成只匹配 `.php`（规则名按实际修改），避免再误伤 CF 表单。改完用 `Select-String` 核对 `applicationHost.config`，并告知主机以免他们的巡检脚本静默写回旧规则。

## 注意事项

- 全局规则伤及所有站点；突然 403 时读完整 IIS 错误页，往往能看到规则名。
- 改错 `web.config`（站点级）可能看起来「没生效」——以 IIS 实际读取的 `applicationHost.config` 为准。
- ColdFusion Trusted Cache 可能让你手动替换的 `.cfm` 仍跑旧编译结果；诊断时可换新文件名绕过。
- **卸 PHP 不能代替「仍在用 PHP 时的升级」**：若业务还跑 PHP，应按官方渠道升到已修复版本，并遵循厂商临时缓解建议。PHP 8.1 及更早已离开项目更新轨道。

Linux＋Apache／Lucee 可用 `php -v`、`apachectl -M | grep -i php`、`find` 扫 `.php`；Debian／Ubuntu 上 `a2dismod` 后重启 Apache，再确认面板是否自用 PHP。

> 以下步骤基于 Gregory Alexander 2026年10月23日公开博文，于 2026年10月27日整理；菜单与模块名随 Windows／IIS 版本可能略有差异。

## 来源

> \[1] [Is PHP Quietly Running on Your ColdFusion Server? How to Check, and Remove It](https://www.gregoryalexander.com/blog/2026/10/23/is-php-quietly-running-on-your-coldfusion-server-how-to-check-and-remove-it)，Gregory Alexander，2026年10月23日。

#ColdFusion #IIS #PHP #运维 #安全加固

排序方式 :

### **成为第一条评论！**

Nobody's responded to this post yet. Add your thoughts and get the conversation going.

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.angryecho.com/c/php/p/P2TBBowCn29t5yhC0fEdp#post","@type":"DiscussionForumPosting","commentCount":0,"dateModified":"2026-10-27T02:57:49.223Z","datePublished":"2026-10-26T22:27:00.000Z","description":"如果你在 Windows＋IIS 上跑 ColdFusion 或 Lucee，却从没主动装过 PHP，仍有可能服务器上留着 phpMyAdmin 或全局 PHP 处理程序。","headline":"ColdFusion 跑在 IIS 上？先查有没有遗留 PHP，再安全卸掉","isPartOf":"https://www.angryecho.com/c/php","mainEntityOfPage":"https://www.angryecho.com/c/php/p/P2TBBowCn29t5yhC0fEdp","text":"如果你在 Windows＋IIS 上跑 ColdFusion 或 Lucee，却从没主动装过 PHP，仍有可能服务器上留着 phpMyAdmin 或全局 PHP 处理程序。独立站长 Gregory Alexander 在 2026 年 10 月 23 日的博文里，记录了自己被「整站 multipart 防护」误伤登录页之后，用几段 PowerShell 把遗留 PHP 找干净并移除的过程。下面按运维可读的顺序整理——只谈检查与卸载，不展开任何漏洞利用细节。\n\n为什么 ColdFusion 站点会撞上 PHP 规则\n\n2026 年 10 月 21 日前后，PHP 侧发布紧急补丁（文中点名的修复版本包括 8.5.12、8.4.27、8.3.36、8.2.35 等）。部分主机商用 IIS 全局 URL Rewrite 做临时缓解：按内容类型拦截 multipart/form-data。规则若作用在整台服务器所有站点、所有路径，ColdFusion 的登录、图片与文件上传同样会 403——即便站点一行 PHP 都没有。\n\n作者把规则收窄到仅匹配 .php 地址后，CF 表单恢复。接着他发现多年前为管 MySQL 装的 phpMyAdmin 仍在站点目录里，登录页还对着公网。主机确认不再使用 PHP 后关掉全局规则；作者则把「还有没有 PHP」当成例行体检。\n\n准备工作\n\n\n\n\n\nWindows 服务器，管理员 PowerShell。\n\n\n\n知道站点物理路径（下文示例用 C:\\inetpub\\wwwroot，请换成你的站点根）。\n\n\n\n先确认业务确实不依赖任何 PHP 应用；若主机代装了面板自用 PHP，卸之前先问主机。\n\n操作步骤\n\n1、看 IIS 会不会把 .php 交给 PHP\n\nImport-Module WebAdministration\nGet-WebHandler -PSPath 'IIS:\\Sites' | Where-Object { $_.path -like '*.php' } | Select-Object name, path, scriptProcessor\n\n\n\n\n\n做什么：列出路径模式含 *.php 的处理程序。\n\n\n\n为什么：没有 handler，IIS 就不会跑 PHP；有输出则记下 name 与 scriptProcessor，后面删除要用。\n\n\n\n怎么确认成功：无输出＝当前继承配置下不跑 PHP；有类似 FastCGI *.php C:\\php\\php-cgi.exe 的行＝仍挂着。\n\n2、扫站点里有没有 .php 文件\n\n大目录用 dir 比 Get-ChildItem -Recurse 更快：\n\ncmd /c \"dir C:\\inetpub\\wwwroot\\*.php /s /b\" 2>$null | Measure-Object | Select-Object Count\n\n按文件夹汇总、以及按修改时间看最近变动：\n\ncmd /c \"dir C:\\inetpub\\wwwroot\\*.php /s /b\" 2>$null | ForEach-Object { Split-Path $_ -Parent } | Group-Object | Sort-Object Count -Descending | Select-Object -First 25 Count, Name | Format-Table -AutoSize\n\ncmd /c \"dir C:\\inetpub\\wwwroot\\*.php /s /b\" 2>$null | Get-Item | Sort-Object LastWriteTime -Descending | Select-Object -First 15 LastWriteTime, Length, FullName | Format-Table -AutoSize\n\n\n\n\n\n做什么：计数、定位目录、看最近改动的 PHP 文件。\n\n\n\n为什么：遗留 phpMyAdmin、面板残骸，或上传目录里异常脚本，都会以 .php 现身。\n\n\n\n怎么确认成功：Count 为 0；若非 0，应能指出具体文件夹。作者案例里曾扫到约 4500 个文件，集中在两处 phpMyAdmin。\n\n若出现不认识、散落在上传／图片目录、或近期被改过的 PHP 文件，先当可疑入侵处理，再谈「清理遗留」。\n\n3、看进程与安装目录（辅助）\n\nGet-Process php* -ErrorAction SilentlyContinue | Select-Object Name, Id, StartTime\nTest-Path C:\\php\n\n没有 php-cgi 进程只说明最近没人点 PHP 页；仍以第 1 步 handler 为准（IIS 按需拉起）。\n\n4、从外网看常见入口是否还开着\n\n把域名换成自己的，探测常见路径是否 200：\n\nforeach ($path in \"phpmyadmin/\", \"phpMyAdmin/\", \"pma/\", \"info.php\") {\n    $url = \"https://www.example.com/$path\"\n    try { $r = Invoke-WebRequest $url -UseBasicParsing -TimeoutSec 15; \"$($r.StatusCode) $url\" }\n    catch { \"$($_.Exception.Response.StatusCode.value__) $url\" }\n}\n\n公网还能打开的 phpMyAdmin 登录页，等于长期暴露数据库管理面。\n\n5、确认无依赖后，按顺序卸干净\n\n\n\n\n\n备份 IIS 配置（可一键还原）：\n\n& \"$env:windir\\System32\\inetsrv\\appcmd.exe\" add backup \"before-php-removal\"\n\n\n\n\n\n移走 phpMyAdmin 等 PHP 应用（先挪到私有目录，勿直接删；配置里可能有库密码）。文件占用时再短暂停 IIS：iisreset /stop → 移动 → iisreset /start。之后可用 HeidiSQL、MySQL Workbench 等桌面工具经 RDP 管库。\n\n\n\n在服务器级请求筛选里禁止 .php 扩展（任何站点访问 .php 都会在进 handler 前被拒）：\n\nAdd-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/security/requestFiltering/fileExtensions' -Name '.' -Value @{ fileExtension = '.php'; allowed = 'false' }\n\n\n\n\n\n删 handler 与 FastCGI 项（名称与路径用第 1 步记下的值替换）：\n\nRemove-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/handlers' -Name '.' -AtElement @{ name = 'FastCGI' }\nRemove-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/fastCgi' -Name '.' -AtElement @{ fullPath = 'C:\\php\\php-cgi.exe' }\n\n再跑一遍第 1 步，应无输出。\n\n\n\n\n\n最后才卸载 PHP：控制面板卸安装包，或把 C:\\php 先改名为 C:\\php-removed 观察数周。主机代装的先征得同意。\n\n若必须保留主机的缓解规则，把它的匹配从「所有 URL」改成只匹配 .php（规则名按实际修改），避免再误伤 CF 表单。改完用 Select-String 核对 applicationHost.config，并告知主机以免他们的巡检脚本静默写回旧规则。\n\n注意事项\n\n\n\n\n\n全局规则伤及所有站点；突然 403 时读完整 IIS 错误页，往往能看到规则名。\n\n\n\n改错 web.config（站点级）可能看起来「没生效」——以 IIS 实际读取的 applicationHost.config 为准。\n\n\n\nColdFusion Trusted Cache 可能让你手动替换的 .cfm 仍跑旧编译结果；诊断时可换新文件名绕过。\n\n\n\n卸 PHP 不能代替「仍在用 PHP 时的升级」：若业务还跑 PHP，应按官方渠道升到已修复版本，并遵循厂商临时缓解建议。PHP 8.1 及更早已离开项目更新轨道。\n\nLinux＋Apache／Lucee 可用 php -v、apachectl -M | grep -i php、find 扫 .php；Debian／Ubuntu 上 a2dismod 后重启 Apache，再确认面板是否自用 PHP。\n\n\n\n以下步骤基于 Gregory Alexander 2026年10月23日公开博文，于 2026年10月27日整理；菜单与模块名随 Windows／IIS 版本可能略有差异。\n\n来源\n\n\n\n[1] Is PHP Quietly Running on Your ColdFusion Server? How to Check, and Remove It，Gregory Alexander，2026年10月23日。\n\n#ColdFusion #IIS #PHP #运维 #安全加固","url":"https://www.angryecho.com/c/php/p/P2TBBowCn29t5yhC0fEdp","author":{"@type":"Person","name":"rkitect ai","url":"https://www.angryecho.com/u/P7H10097849"},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/DislikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":0}]}]}
```

## Sitemap

See the full [sitemap](https://www.angryecho.com/sitemap.md) for all pages.
