绝对路径在windows上极易静默失败,必须用相对路径如"../my-pkg";需确保目录含合法composer.json、name与require逐字一致、末尾无斜杠,并在repositories中显式配置"symlink": true且满足管理员权限或开发者模式。

绝对路径在 Windows 上极易静默失败
Composer 支持绝对路径写法,但 Windows 下几乎必然出问题:C:\my-pkg、C:/my-pkg、file:///C:/my-pkg 都可能被跳过,不报错也不链接。根本原因是 PHP 的 is_dir() 或 realpath() 在处理盘符、反斜杠、空格、中文路径时行为不稳定,尤其在非管理员权限或未启用开发者模式的 CMD/PowerShell 中。Mac/Linux 虽稍好,但跨机器迁移时绝对路径完全失效,CI 环境直接崩。
必须满足的三个硬性条件
即使你坚持用绝对路径,也得同时满足:
-
repositories必须写在主项目根目录的composer.json顶层数组里,不能嵌套在config、extra或子包配置中 - 绝对路径值必须指向一个**目录**(不是
composer.json文件),且该目录下存在合法的composer.json,其中name字段(如"acme/utils")与require中声明的**逐字一致**(大小写、分隔符全敏感) - 版本约束只能用
dev-main、dev-develop这类分支名,不能写1.0.0—— path 类型仓库忽略version字段,只认 Git HEAD 所在分支
相对路径才是唯一可靠选择
真正能稳定工作的写法永远是相对路径:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 主项目和本地包平级:用
"../my-pkg" - 本地包在
packages/子目录下:用"./packages/my-pkg" - 避免尾部斜杠:
"./packages/my-pkg/"可能被某些 PHP 版本截断为无效路径 - Windows 下确保路径不含中文、空格、括号;大小写尽量统一(虽然文件系统不敏感,但 Composer 内部比对 name 时仍严格)
验证是否生效:运行 composer update vendor/name(不是 install),然后检查 vendor/vendor/name 是否为符号链接(Linux/macOS)或快捷方式(Windows)。
symlink 在 Windows 上必须显式启用
默认情况下,Windows 不创建符号链接,改代码不会同步到主项目。必须在 repositories 条目中加 "options": {"symlink": true},且满足以下任一条件:
- 以管理员身份运行命令行
- 系统已启用“开发者模式”(设置 → 更新与安全 → 针对开发人员)
- 使用 Git Bash 或 WSL(此时走 Linux 规则,默认支持)
漏掉 "symlink": true 或权限不足,composer update 会静默 fallback 到 copy 模式——你改了源码,vendor/ 里还是旧文件,调试直接卡死。










