config.bin-dir仅控制依赖包二进制文件的符号链接或复制路径,不消除vendor/bin;需运行composer install/update生效,并手动配置path才能调用。

config.bin-dir 配置只影响依赖包的符号链接位置,不改变 vendor/bin 的存在
改 bin-dir 不是“把二进制文件挪走”,而是让 Composer 在安装/更新时,额外在你指定的目录里建符号链接(Linux/macOS)或复制 .bat 文件(Windows)。vendor/bin 依然会生成且不可禁用。
常见错误是以为设了 "bin-dir": "bin" 就能删掉 vendor/bin —— 实际上它始终存在,只是多了一层指向它的链接。
- 项目级配置:在项目根目录
composer.json的config段加"bin-dir": "bin",然后必须运行composer install或composer update才生效 - 路径必须是相对路径(如
bin、tools),不能以../开头,也不建议写绝对路径 - 目标目录无需提前创建,Composer 会自动建;但若权限不足或被防病毒软件拦截(尤其 Windows),可能静默失败
- 已有
vendor/bin下的旧链接不会被自动清理,新命令只出现在新目录中
为什么改了 bin-dir 还是执行不了 phpunit?PATH 没跟上
Composer 只负责放文件,不负责告诉 shell 去哪找。终端找不到命令,99% 是因为 $PATH 里没包含你的新目录。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 临时生效(当前终端):
export PATH="./bin:$PATH"(注意是./bin,不是bin) - 长期生效(推荐仅限个人开发):把
export PATH="$(pwd)/bin:$PATH"加进~/.zshrc(macOS/Linux)或系统环境变量(Windows) - 协作项目中别硬写绝对路径,CI/CD 脚本应统一用
vendor/bin/phpunit或composer exec phpunit - IDE(如 PHPStorm)通常不读 shell 的
export行,需在 IDE 设置里单独配环境变量,或重启 IDE
全局 bin 目录怎么加进 PATH?先确认路径再追加
全局安装的命令(如 composer global require laravel/installer)默认放在 $COMPOSER_HOME/vendor/bin,这个路径几乎从不在初始 $PATH 中。
- 先查真实路径:
composer global config bin-dir --absolute,别猜~/.composer/vendor/bin - Linux/macOS:把输出路径加到
~/.zshrc(Zsh 用户)或~/.bashrc(Bash 用户),例如export PATH="/home/you/.composer/vendor/bin:$PATH" - Windows:在「系统属性 → 高级 → 环境变量」中,向「用户变量」的
Path新增一行,填完整路径(如C:\Users\You\AppData\Roaming\Composer\vendor\bin) - 改完必须重载配置:
source ~/.zshrc或新开终端;否则which laravel仍返回空
自己写的脚本怎么进 bin 目录?bin 字段 + 可执行权限缺一不可
想让 bin/deploy 出现在 bin/ 下并被 Composer 管理,光放文件不行,必须显式声明。
- 在
composer.json中加"bin": ["bin/deploy"],同时确保config.bin-dir已设(如"bin-dir": "bin") -
bin/deploy文件必须有可执行权限:chmod +x bin/deploy(Linux/macOS);Windows 需是.bat或.exe,且内容第一行不能是 shebang - 运行
composer install后,bin/deploy会被软链(或复制)到bin/目录下,和phpunit并列 - 如果脚本依赖项目 autoload,记得用
#!/usr/bin/env php开头,并在文件内require __DIR__.'/vendor/autoload.php';
bin-dir(项目级、全局级、临时参数)优先级不同,且插件(如 dealerdirect/phpcodesniffer-composer-installer)可能绕过它直接往 vendor/bin 写。检查是否冲突,最直接的方式是 composer show --plugins 加 ls -l vendor/bin/ 对比。










