composer install 严格按 composer.lock 安装确切版本,确保环境一致;composer update 忽略 lock,重解析 composer.json 并更新依赖树,强制改写 lock 文件。

composer install 和 composer update 什么时候该用哪个
部署和协作必须用 composer install,开发中主动升级才用 composer update。前者只读 composer.lock,装的是锁定的**确切版本号**;后者忽略 lock 文件,按 composer.json 重新解析依赖树,会改写 composer.lock——它不是“更新项目”,是“重算整个依赖图”。
- CI/CD 脚本里出现
composer update,等于把构建结果交给网络延迟和上游包发布时间,凌晨告警八成由此而来 - 首次运行
composer install时若无composer.lock,它会自动 fallback 到update并生成锁文件——这等于绕过团队约定,建议初始化后立即git add composer.lock - 想只升某一个包?用
composer update monolog/monolog,别裸跑composer update,否则子依赖可能卡在旧版引发冲突 - 升级后出问题?立刻
git checkout composer.lock && composer install回滚,比查日志快得多
加依赖为什么不能手写 composer.json
手写 composer.json 极易因引号漏写、逗号多写、JSON 格式错误导致后续命令失败;composer require 是声明 + 安装 + 锁定三步合一的安全路径。
- 开发工具类(如
phpunit/phpunit、phpstan/phpstan)必须加--dev,否则进require区,上线也会加载 - 指定版本要带约束符:
composer require guzzlehttp/guzzle:^7.5(推荐),而不是7.5(会被解释为严格等于7.5.0,基本匹配不到) - 只想改
composer.json不安装?加--no-update,比如composer require symfony/console --no-update,后续可单独composer update symfony/console - 遇到
Your requirements could not be resolved且确认是 PHP 版本限制(如本地 PHP 8.3,但包声明只支持 8.2),可临时加--ignore-platform-reqs强装——但别提交,CI 禁用
Class not found 报错,90% 不是代码问题,是 autoload 没刷新
Composer 不监听文件增删,新增 PSR-4 目录、改了 autoload 配置、或加了 files 类型的全局函数文件,都必须手动运行 composer dump-autoload。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 典型场景:你在
app/Helpers/下写了新工具类,composer.json里配了"files": ["app/Helpers/functions.php"],但跑起来报Class not found——这时候不是路径错了,是没重 dump - 开发中频繁加类又不想每次
update,加-o生成 classmap:composer dump-autoload -o,比默认 PSR-4 查找更快 - 用了
filesautoload(比如src/functions.php),改了那个文件也得重dump-autoload,否则不会生效 - 调试映射失效?可用
composer dump-autoload -a强制重生成所有 autoload 规则
composer global require 装的命令为什么找不到
不是没装上,是 shell 找不到它的可执行文件位置。Composer 全局 bin 目录不在 $PATH 里,就等于没装。
- 装完运行报
command not found?先确认composer global config bin-dir --absolute输出的路径是否已加入$PATH - 常见修复方式(Linux/macOS):
export PATH="$(composer global config bin-dir --absolute):$PATH",并写入 shell 配置文件(如~/.zshrc) - Windows 用户需手动将
composer global config bin-dir --absolute返回的路径添加到系统环境变量Path中 -
composer global require laravel/installer这类命令,装的是全局工具,但它不等于系统级命令——它依赖 Composer 自己管理的 bin 目录是否在$PATH里
真正容易被忽略的点是:锁文件的生命周期、autoload 的惰性刷新、以及全局 bin 路径的隐式依赖。这三个地方不出问题时没人注意,一出就是整条链路崩掉。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










