vendor/bin 命令打不开主因是目标脚本缺执行权限(x位)或 shebang,而非符号链接本身;需 chmod +x 源文件并确保首行含 #!/usr/bin/env php 等有效解释器声明。

Linux/macOS 下 vendor/bin 里的命令为啥打不开?
不是 Composer 没生成,而是系统拒绝执行——常见报错是 Permission denied 或直接提示 command not found(后者更可能是 PATH 问题)。vendor/bin 里所有符号链接本身没执行权限问题,但它们指向的源文件(比如 vendor/phpunit/phpunit/phpunit)必须可读可执行。Composer 安装时默认不会给这些 PHP 脚本加 +x,尤其当源包没声明 shebang 或用的是 Windows 行尾时。
- 先确认目标脚本是否真有执行权限:运行
ls -l vendor/phpunit/phpunit/phpunit,看输出最前面是否有-rwxr-xr-x中的x - 若没有,手动补上:
chmod +x vendor/phpunit/phpunit/phpunit - 如果该脚本第一行不是
#!/usr/bin/env php,请加上(PHP CLI 脚本必须有 shebang 才能被系统识别为可执行) - 别对
vendor/bin/phpunit本身 chmod ——它是符号链接,改它没用
自己写的 bin 脚本怎么让 composer install 后自动可用?
你放了个 bin/deploy,也加了 "bin": ["bin/deploy"] 到 composer.json,但 composer install 后 vendor/bin/deploy 还是报错?大概率是脚本本身没权限或缺 shebang。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
bin/deploy文件必须有执行权限:chmod +x bin/deploy - 开头必须带 shebang:
#!/usr/bin/env php(PHP 脚本)或#!/bin/bash(Shell 脚本),不能省略 - 确保
composer.json的config.bin-dir没被意外覆盖,默认就是vendor/bin,改了要重装依赖才生效 - Windows 用户注意:
vendor/bin/deploy实际是deploy.bat,它会调用 PHP 解释器,所以仍需保证php在 PATH 中
为什么 chmod +x 后还是 Permission denied?
常见于 NFS、某些容器卷、或挂载了 noexec 选项的文件系统。Linux 内核禁止在这些挂载点上执行任何二进制,chmod 再多次也没用。
- 检查挂载选项:
mount | grep "$(pwd)",看输出里有没有noexec - 临时绕过:用
php vendor/phpunit/phpunit/phpunit显式调用解释器(不依赖 shebang 和执行位) - 长期方案:把项目移到本地磁盘(如
/home/user/project),而非挂载的网络路径或 Docker volume - 宝塔面板用户特别注意:/www/wwwroot/ 下某些目录可能被 SELinux 或安全策略限制,需额外执行
chcon -t httpd_exec_t vendor/phpunit/phpunit/phpunit
全局 bin 工具(如 laravel/installer)权限出问题怎么办?
这类工具装在 ~/.composer/vendor/bin/,但如果你之前用过 sudo composer global require,整个 ~/.composer 可能属 root,导致当前用户无法执行其中任何命令。
- 别再用 sudo 跑 global 命令,先修复归属:
sudo chown -R $USER:$USER ~/.composer - 确认
~/.composer/vendor/bin在 PATH 中:echo $PATH里得有它;没的话加到~/.zshrc:export PATH="$HOME/.composer/vendor/bin:$PATH" - 运行
composer global config bin-dir --absolute看实际路径,避免硬编码错误路径 - 如果用了 Homebrew PHP(尤其 M1/M2 Mac),
~/.composer可能被 brew 权限策略干扰,建议显式设COMPOSER_HOME=$HOME/.composer










