Composer在Windows中卡顿主因是Windows Defender实时扫描,解决方法包括:一、将Composer目录和临时路径加入Defender排除列表;二、排除php.exe文件;三、临时禁用实时防护;四、用start /low降低进程优先级;五、改用WSL环境运行。

如果您在Windows系统中运行Composer命令时出现明显延迟或卡顿,可能是由于Windows Defender实时防护功能对PHP进程和临时文件进行频繁扫描所致。以下是解决此问题的步骤:
一、将Composer目录添加到Windows Defender排除列表
通过将Composer可执行文件、全局vendor目录及临时缓存路径从Windows Defender实时扫描中排除,可显著减少I/O阻塞和CPU占用。
1、按下 Win + R,输入 windowsdefender: 并回车,打开Windows安全中心。
2、点击“病毒和威胁防护”,再点击“管理设置”下的“添加或删除排除项”。
3、点击“添加排除项” → 选择“文件夹”,依次添加以下路径(若路径与您的实际安装不一致,请替换为对应路径):
4、C:\Users\{用户名}\AppData\Roaming\Composer
5、C:\ProgramData\ComposerSetup\bin(若使用ComposerSetup安装)
6、C:\Users\{用户名}\AppData\Local\Temp(Composer临时解包目录)
二、禁用Windows Defender对PHP进程的扫描
Windows Defender可能对php.exe及其子进程实施行为监控,导致exec()、proc_open()等调用延迟;将PHP解释器路径设为排除项可绕过该层检测。
1、在PowerShell(管理员权限)中执行以下命令以获取当前PHP路径:
2、where php
3、记下返回的完整路径,例如 C:\php\php.exe。
4、回到“添加或删除排除项”,选择“文件”,添加该php.exe文件。
5、如使用多个PHP版本(如通过XAMPP、WAMP或WSL集成),需为每个php.exe分别添加排除。
三、关闭Windows Defender实时防护(临时方案)
在开发调试阶段,可临时停用实时防护以验证是否为根本原因;该操作不修改系统配置,重启后自动恢复。
1、在PowerShell(管理员权限)中运行:
2、Set-MpPreference -DisableRealtimeMonitoring $true
3、执行Composer命令测试速度提升效果。
4、验证完成后,立即恢复防护:
5、Set-MpPreference -DisableRealtimeMonitoring $false
四、改用非实时扫描模式运行Composer
通过设置环境变量强制Composer跳过某些高开销操作,并配合低优先级进程调度,降低与Defender的资源争抢。
1、在命令行中执行以下命令启动Composer(不加任何参数):
2、start /low cmd /c "composer install"
3、对其他命令(如 update、require)同样前置 start /low。
4、也可永久设置:在系统环境变量中新增 COMPOSER_MEMORY_LIMIT=-1,避免内存限制触发额外扫描。
五、切换至Windows Subsystem for Linux(WSL)环境
在WSL中运行Composer完全脱离Windows Defender对PHP进程的监控范围,且文件系统性能更优,尤其适合大型依赖安装场景。
1、启用WSL并安装Ubuntu发行版(通过Microsoft Store或wsl --install)。
2、在WSL终端中运行:
3、sudo apt update && sudo apt install php-cli unzip git
4、下载并安装Composer:
5、php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
6、sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
7、将项目目录挂载至WSL(如 /mnt/c/Users/xxx/project),在WSL中执行Composer命令。










