Windows安全中心不拦截PHP语言本身,而是将php.exe等可执行文件误判为威胁;应通过“添加排除项”信任PHP安装目录或项目文件夹,而非关闭防护。

Windows安全中心本身不直接“放行PHP”或“关闭PHP”,它没有针对编程语言的拦截逻辑。你遇到的问题,实际是安全中心把你的PHP可执行文件(如 php.exe、php-cgi.exe 或本地开发环境如 XAMPP/WAMP 中的 PHP 进程)识别为潜在威胁并阻止运行——常见于调试时双击 php 文件、启动内置服务器(php -S)或运行 Composer 命令时被拦截。
先确认是不是安全中心在拦截
出现弹窗提示“此应用已被阻止”“无法验证发布者”或“Windows 安全中心已阻止此应用”,同时任务管理器中看不到 php.exe 进程,基本就是它在起作用。也可以打开 Windows 安全中心 → “病毒和威胁防护” → “保护历史记录”,筛选“阻止的应用”,查看是否有 php 相关条目。
推荐优先用“添加排除项”而非关闭防护
这是最安全、最推荐的方式:让 Defender 继续运行,只对可信的 PHP 文件或目录“睁一只眼”。操作简单且无需重启:
- 打开 Windows 安全中心 → “病毒和威胁防护” → “管理设置”
- 向下滚动到“排除项” → 点击“添加或删除排除项”
- 点击“+ 添加排除项” → 选择“文件夹”(推荐)→ 浏览并选中你的 PHP 安装目录(如
C:\php)或开发项目根目录(如D:\myproject) - 也可选“文件”添加具体 exe(如
C:\php\php.exe),但每次更新 PHP 版本需重新加
如果排除项无效,检查是否被篡改防护锁死
即使你手动关了实时保护,篡改防护(Tamper Protection)仍可能强制恢复设置。必须先关它:
立即学习“PHP免费学习笔记(深入)”;
- Win + I → 隐私和安全性 → Windows 安全中心 → 病毒和威胁防护 → 管理设置
- 滚动到底部找到【篡改防护】→ 切换为“关”
- 再回到上一级,把“实时保护”“云提供的保护”等也暂时关闭(仅调试时)
开发环境专用建议:用组策略/注册表彻底隔离
如果你长期使用本地 PHP 开发(如 Laravel Valet、Docker + PHP-FPM),且已安装可信第三方杀软(如 Bitdefender、ESET),可考虑停用 Defender 核心服务:
-
专业版/企业版:用
gpedit.msc启用“关闭 Microsoft Defender 防病毒”,并禁用“允许反恶意软件服务始终保持运行” -
家庭版:管理员运行 regedit,定位到
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender,新建 DWORD 值DisableAntiSpyware = 1,重启生效 - 注意:停用后务必确保有替代防护,否则系统裸奔风险极高
本质上,不是“关闭PHP”,而是让安全中心信任你的开发环境。排除项法够用、安全、可逆,90% 的 PHP 开发者只需这一步就够了。



















