bin-dir必须在composer.json的config中配置相对路径,不可用命令行开关;需手动创建目录、删除旧vendor/bin、重装依赖,并配bin-compat: full兼容中文路径,PATH须自行添加。

composer.json里配bin-dir是唯一可靠方式
直接运行composer install --bin-dir=xxx会失败,报错Unrecognized option "--bin-dir"——这个参数在 Composer 2.x 中已被移除,命令行开关早已不生效。必须改项目根目录的composer.json,在config段写死:
{ "config": { "bin-dir": "scripts" } }值必须是相对路径(如scripts、bin),不能以../开头,也不能是绝对路径(除非你加--no-plugins强行绕过校验,不建议)。
改完必须重装依赖,且目标目录得提前存在
bin-dir配置不会自动创建目录。如果scripts/不存在,composer install会直接报错:Could not create bin dir。所以操作顺序只能是:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 手动创建
scripts/目录(mkdir scripts) - 修改
composer.json - 删掉现有
vendor/bin/(避免旧链接残留干扰) - 执行
composer install或composer update重建
composer dump-autoload完全没用——它只刷新类映射,不碰二进制文件。
Windows/macOS中文路径下必加bin-compat
如果你的系统用户名含中文(比如C:\Users\张三\project),或bin-dir路径本身含中文/空格,符号链接大概率静默失败,最终scripts/里空空如也。根本原因是bin-compat默认为auto,在权限受限时 fallback 到 copy 模式,但 copy 后的.bat文件可能调用不到php.exe(PATH 未注册或路径含中文)。解决方案是在config里同时写:
"bin-dir": "scripts", "bin-compat": "full"
full强制启用兼容模式,让 Windows 生成能正确解析 php 路径的.bat,macOS/Linux 也能更稳定处理 shebang。
PATH环境变量得自己加,Composer 不会帮你
就算scripts/phpunit已生成,终端里直接敲phpunit还是报command not found——因为系统$PATH没包含它。Composer 从不修改你的 shell 环境。临时用:export PATH="./scripts:$PATH";永久生效就加到~/.zshrc或~/.bashrc。还要注意:
- 路径必须是
./scripts(相对当前项目),不是scripts/(少个点就找不到) - 如果用了
composer exec,它会自动识别bin-dir,不用额外配PATH - IDE(如 PhpStorm)需要单独在设置里指定可执行路径,填
./scripts/phpunit而不是依赖全局PATH
bin-dir只控制软链/复制行为,不改变依赖包自身声明的bin字段逻辑;而某些插件(比如dealerdirect/phpcodesniffer-composer-installer)会绕过这个配置,直接往vendor/bin写文件——遇到这种情况,得查composer show --plugins确认是否冲突。

















