必须用 composer install 而不是 composer update,因为它严格按 composer.lock 安装指定版本和哈希值,确保环境一致性;update 会忽略 lock 文件重解析依赖,导致版本漂移和线上风险。

直接运行 composer install 就行,不需要额外参数,也不该用 composer update。
为什么必须用 composer install 而不是 composer update
composer install 会严格按 composer.lock 中记录的版本、哈希值和嵌套依赖关系安装包,确保所有环境一致;composer.update 会忽略 composer.lock,重新解析 composer.json 并拉取最新兼容版本,导致实际安装结果与 lock 文件不一致。
- CI/CD 流水线里一旦误用
composer update,可能引入未测试过的版本,引发线上故障 - 团队协作中,有人改了
composer.json但没提交新composer.lock,此时执行composer install会报错并中止,这是保护机制,不是 bug - 如果
composer.lock不存在,composer install会退化为composer update行为 —— 这是唯一例外,但说明你已经丢失了确定性依据
composer install 执行失败的常见原因和对策
典型错误信息如:Package operations: 0 installs, 0 updates, 0 removals 却没装任何包,或报 Root composer.json requires ... but it is not satisfied。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 检查当前 PHP 版本是否满足
composer.lock中记录的平台要求(比如 lock 文件里写了"platform": {"php": "^8.1"},而你本地是 PHP 7.4) - 确认
composer.json和composer.lock是配套的:修改过composer.json后没运行composer update生成新 lock,会导致 install 失败 - Windows 下若提示
file could not be downloaded: failed to open stream: HTTP request failed!,大概率是 ca-bundle 路径失效,可临时加--no-secure-http(仅限开发机),或更新 OpenSSL 配置
想跳过某些步骤?这些标志位要谨慎用
composer install 默认行为已足够稳健,但有些场景会诱使你加参数,需注意副作用:
-
--no-dev:跳过require-dev区块 —— 生产部署应该加,但本地恢复开发环境时别加,否则 IDE Helper、PHPUnit 等工具就没了 -
--no-scripts:禁用post-install-cmd类钩子 —— 若项目依赖脚本生成配置或资源(如 Laravel 的storage:link),跳过会导致功能异常 -
--ignore-platform-reqs:强行绕过 PHP/扩展版本检查 —— 可临时用于调试,但不能进 CI 或上线流程,lock 文件里的约束就是为你服务的
真正容易被忽略的是 lock 文件的“时效性”:它只保证“当时能跑”,不保证“永远可用”。Packagist 下架包、Git 仓库私有地址变更、网络策略调整,都可能让某一行 hash 对应的 zip 包再也拉不到 —— 这时候你得看 log 里具体卡在哪条 installing xxx (v1.2.3),再针对性处理源或镜像配置。










