composer如何解决由于Windows Defender拦截导致的缓慢_composer运行优化【指南】

12次阅读

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

composer如何解决由于Windows Defender拦截导致的缓慢_composer运行优化【指南】

如果您在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{用户名}appDataRoamingComposer

5、C:ProgramdataComposerSetupbin(若使用ComposerSetup安装)

6、C:Users{用户名}AppDataLocalTemp(Composer临时解包目录)

二、禁用Windows Defender对PHP进程的扫描

Windows Defender可能对php.exe及其子进程实施行为监控,导致exec()、proc_open()等调用延迟;将PHP解释器路径设为排除项可绕过该层检测。

1、在PowerShell(管理员权限)中执行以下命令以获取当前PHP路径:

2、where php

3、记下返回的完整路径,例如 C:phpphp.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命令。

text=ZqhQzanResources