该用 composer install 还是 update 取决于是否存在 composer.lock 文件:有则用 install(装锁定版本,快且稳定);无或需升级全部依赖时才用 update(重算依赖图,易引入不兼容变更),ci/cd 和生产环境必须用 install 以保证构建可复现。

安装依赖时 composer install 和 composer update 到底该用哪个
看项目有没有现成的 composer.lock 文件。有,就用 composer install;没有,或者你明确要升级所有包(包括子依赖),才用 composer update。
很多人误以为 composer update 是“更新项目”,其实它会重新解析整个依赖图、忽略 composer.lock 里的精确版本锁定,容易引入不兼容变更。CI/CD 环境或生产部署必须用 composer install,否则构建结果不可复现。
-
composer install:只读composer.lock,装里面记录的**确切版本**,快且稳定 -
composer update:重新计算依赖,写入新composer.lock,适合开发阶段主动升级 - 想只更新某一个包?用
composer update vendor/package-name,别全量刷
为什么 composer require 有时装不上,报 Root composer.json requires ... but it is not satisfiable
这不是网络问题,是版本冲突。Composer 在尝试把你要加的包,和已有的其他依赖(尤其是 php 版本、ext-xxx 扩展、已有包的约束)对齐失败了。
常见诱因:composer.json 里写了过严的 php 版本(比如 "php": "^8.0"),但你要装的包只支持 ^8.2;或者两个已装包各自要求某个第三方库的不同主版本(如 monolog/monolog:^2 和 ^3 冲突)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先运行
composer why-not vendor/package-name:version,看谁在拦路 - 加
--with-all-dependencies可能缓解子依赖冲突,但要小心副作用 - 临时降级 PHP 版本约束?可以改
composer.json里的php行,但得确认运行环境真支持
composer dump-autoload 什么时候必须手动跑
当你新增了类文件、改了 psr-4 映射、或加了 files 类自动加载配置后,Composer 不会自动重生成 vendor/autoload.php —— 它只在 install/update 时顺带做这件事。
典型场景:你在 app/Helpers/ 下写了新工具类,composer.json 里配了 "files": ["app/Helpers/functions.php"],但跑起来报 Class not found。这时候不是 autoload 漏了,是没刷新映射。
- 开发中频繁增删类?建议加
--optimize-autoloader(即-o)提升性能,但仅用于生产环境构建 -
composer dump-autoload -a强制重生成所有 autoload 规则,适合调试映射失效 - 注意:如果用了
classmap,新增文件后也得手动dump-autoload,它不会监听文件变化
全局命令 vs 项目本地命令:为什么 composer global 要谨慎
composer global require laravel/installer 这种操作,本质是把包装进 ~/.composer/vendor/,并把 bin 路径加进 $PATH。问题在于:全局包版本固定、无法按项目隔离、升级易互相干扰。
比如你全局装了 phpunit/phpunit:9.5,但某个老项目只能用 8.5,执行 phpunit 命令时就会错——它调的是全局的 9.5,不是项目 vendor/bin/phpunit。
- 优先用项目级
vendor/bin/xxx,例如./vendor/bin/phpunit - 非要用全局?确保只装真正跨项目的 CLI 工具(如
larastan、php-cs-fixer),且定期composer global update - 全局 bin 目录在哪?查
composer global config bin-dir --absolute
composer.lock 的作用机制和 global 的路径污染问题,这两个点一旦出错,排查成本远高于预防成本。










