根本原因是Windows默认禁用符号链接权限,需启用开发者模式;启用后重启终端并清空vendor/和composer.lock再执行composer install即可正常创建软链接。

Windows 下 Composer 安装时软链接创建失败,99% 是系统权限没开,不是 Composer 配置或命令写错了。
确认是不是 Windows 符号链接权限被禁用
Composer 在 vendor/bin 创建软链接(比如 phpunit 指向 ../phpunit/phpunit/phpunit)时,底层调用的是 Windows 的 mklink。普通用户默认无权执行该操作。
- 以管理员身份打开 PowerShell,运行:
mklink /D test-link . - 如果提示“你没有足够的权限执行此操作”,说明权限确实被锁死
- 家庭版 Windows 没有
gpedit.msc?别折腾组策略,直接启用开发者模式(见下一条) - 企业环境被组策略锁死?跳过软链接(
--no-bin-links)是唯一安全选项,但需接受副作用
启用开发者模式是最稳的解法(Win10/Win11)
启用后,系统自动赋予当前用户创建符号链接的权限,无需每次提权、不改组策略、不污染文件所有权。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 打开「设置 → 系统 → 开发者选项」,开启「开发者模式」
- 等待组件安装完成(可能需重启)
- 重启终端(VS Code 内置终端、Git Bash、WSL 均可,**不用管理员身份**)
- 清空
vendor/和composer.lock,再运行composer install - 首次启用后仍报错?大概率是缓存残留,务必清掉再试
path 仓库不生成软链接?检查这三处硬性条件
你在 composer.json 里配了 "type": "path",但 vendor/my-vendor/pkg 却是复制过来的目录,不是软链接——这不是 Composer 抽风,是它悄悄 fallback 了。
-
"symlinks": true必须写在repositories里对应 path 仓库的对象内,不能放在根config下 - 路径必须是相对路径(如
"../my-pkg")或绝对路径(如"C:/dev/my-pkg"),含~或$HOME会直接失效 - 目标目录(即
url指向的路径)必须存在,且其中的composer.json有合法"name"字段,且与require中的包名完全一致 - 已安装却没链接?删掉
vendor/my-vendor/pkg,加--prefer-source重装:composer update my-vendor/pkg --prefer-source
别用管理员 CMD 运行 Composer 来“绕过”错误
看似能过,实则埋雷:生成的软链接归 Administrator 所有,普通用户后续无法删除、修改 vendor/,连 composer update 都可能卡住。
- Windows 下所有
vendor/目录操作,应始终以当前登录用户身份执行 - 若已误用管理员运行导致权限混乱,手动修复比重装更可靠:
icacls vendor /reset /T - CI 或企业锁定环境?老实用
--no-bin-links,并在composer.json的config里显式设"bin-dir": "bin/",避免团队成员误踩
真正容易被忽略的点:软链接是否生效,和 Composer 版本、PHP 版本几乎无关,只取决于 Windows 是否允许当前用户调用 mklink,以及 path 仓库的路径和命名是否严格匹配。其它所有“技巧”都是在绕开这个前提,而不是解决它。

















