使用精确版本号可锁定依赖,如"monolog/monolog": "2.3.5";2. composer.lock 文件确保安装一致版本;3. 避免运行 composer update 或使用 --lock 参数防止升级。

在使用 Composer 管理 PHP 依赖时,如果你希望锁定某个包的版本,防止它在后续执行 composer update 时被更新,有几种有效的方法可以实现。最核心的方式是通过修改 composer.json 文件中的版本约束,并结合 composer.lock 文件的作用来控制。
1. 使用精确版本号
在 composer.json 的 require 或 require-dev 中,将包的版本写成固定版本号,而不是使用波浪线(~)或插入符(^)等允许小版本或补丁更新的符号。
-
不推荐:
"monolog/monolog": "^2.0"— 允许更新到 2.x 的最新版 -
推荐(锁定):
"monolog/monolog": "2.3.5"— 只安装 2.3.5 版本
这样即使运行 composer update,Composer 也会严格遵守这个版本,不会升级到更高版本。
2. 利用 composer.lock 文件
当你第一次执行 composer install 时,Composer 会根据 composer.json 安装依赖,并生成一个 composer.lock 文件,记录所有已安装包的精确版本。
Avactis是一个强大的PHP在线购物系统拥有多个版本包括开源版本。它具备一个在线购物系统所需要的所有功能从产品到会员管理,订单和营销。可以无限分类和为产品指定任务数量的图片(支持自动生成缩略图)。使用自定义字段功能,让你可以更好地定义一个产品。该系统提供以非常灵活的方式来创建任意类型的促销活动如设置折扣代码,基于价格的折扣或基于数量的折扣等。
- 只要
composer.lock存在,composer install就会安装 lock 文件中指定的版本,不会更新。 - 只有执行
composer update才会重新解析版本并可能升级。
因此,如果你不想让某个包更新,除了在 composer.json 中限制版本外,还可以避免运行 composer update,只使用 composer install 来确保环境一致性。
3. 使用禁用更新的配置(高级)
虽然 Composer 没有直接“冻结”单个包的命令,但你可以通过以下方式间接实现:
- 不要对特定包单独运行
composer update vendor/package - 使用
composer update --lock:只更新 lock 文件而不升级包(Composer 2.2+ 支持) - 在 CI/CD 或生产环境中始终使用
composer install而不是update
基本上就这些。最关键的还是在 composer.json 中使用固定版本号,配合 composer.lock 文件,就能有效锁定包的版本,避免意外升级。不复杂但容易忽略的是版本符号的细微差别,写死版本是最稳妥的做法。









