答案是执行前必须确认当前工作目录可写,因为composer严格将vendor/创建在运行命令的当前目录下,而非配置指定位置;若目录不可写(如共享主机的~/public_html/),就会报permission denied。

执行前必须确认当前工作目录是否可写
Composer 会把 vendor/ 直接建在你运行 composer install 时所在的目录下,而不是“项目配置指定的位置”。如果你在 ~/public_html/ 下执行,而主机禁止该路径写入(很常见),就会报 file_put_contents(./vendor/autoload.php): Failed to open stream: Permission denied。
- 先用
pwd或cd确认当前路径,别凭印象认为“已经在项目里了” - 共享主机上优先把代码放
~/myapp/、~/projects/my-site/这类纯用户目录,再通过 Web server alias 或符号链接暴露出去 - Windows 下注意盘符切换:用
cd /d D:\my-project,不是cd D:\my-project(后者不生效)
多个项目共用一个 vendor 目录?绝对不行
每个项目必须有自己独立的 composer.json 和 vendor/。试图软链、挪动或复用 vendor/ 会导致 autoload 冲突、类找不到、require_once(): Failed opening required 'vendor/autoload.php' 等问题。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer install总是基于当前目录找composer.json,不会跨目录读取 - 不要在父目录放通用
composer.json然后用--working-dir切换——这会让 autoloader 生成逻辑错乱,IDE 和 CLI 都可能误判上下文 - 想加速安装?靠的是全局 cache(默认在
~/.composer/cache/),不是共享vendor/
命令行参数不能覆盖 vendor 路径,但能绕过常见卡点
composer install 没有 --vendor-dir 或 --target-dir 这类参数。所谓“改安装位置”,本质就是先 cd 进去再执行。但有些参数能帮你避开实际障碍:
- 加
--prefer-dist:避免触发git clone,共享主机通常禁用 git,否则卡在Cloning into '' - 加
--no-dev:跳过 dev 依赖,减少写入量和失败概率 - 加
--optimize-autoloader:生成更紧凑的 autoload 映射,部署时推荐 - 别用
--archive-dir=/xxx:这个选项根本不存在,会报Unknown option archive-dir
权限和缓存路径不是 vendor 位置,但影响 install 是否成功
COMPOSER_HOME 控制的是 Composer 自己的配置、插件、缓存(比如 auth.json、cache/),跟 vendor/ 无关。改它不会让 install 跳到 D 盘或别的地方,但能防止 C 盘写满或权限冲突。
- Linux/macOS 下若曾用
sudo composer global,后续普通用户运行会因~/.composer/vendor/权限被拒 - 运行前执行
umask 002,避免生成的文件权限太严(如644),导致 PHP 运行时报failed to open stream - 缓存路径可用
composer config --global cache-dir查看,清空它只会让下次下载变慢,不影响 vendor 生成逻辑
vendor/ 在哪的,只有你敲下 composer install 时终端光标停在哪——这个细节,90% 的报错都源于此。










