composer install 默认读取 composer.lock 文件,严格按其中记录的版本、哈希和路径还原依赖以确保环境一致;若无 lock 文件则退化为 update,破坏同步性。
composer install 会读取哪个文件来安装依赖
composer install 默认读取项目根目录下的 composer.lock 文件,而不是 composer.json。它会严格按 composer.lock 中记录的版本号、哈希值和安装路径还原依赖,确保不同环境安装完全一致。
如果项目中没有 composer.lock(比如刚克隆一个只有 composer.json 的仓库),composer install 会退化为执行一次 composer update:解析 composer.json、计算最新兼容版本、生成新的 composer.lock —— 这就失去了“同步环境”的意义。
- ✅ 正确流程:提交
composer.lock到 Git,所有协作者都运行composer install - ❌ 错误操作:删掉
composer.lock后运行composer install,等同于更新全部依赖 - ⚠️ 注意:
composer install --no-lock强制忽略composer.lock,仅用于调试,不可用于生产环境
为什么有时候 composer install 没反应或报错 “Your requirements could not be resolved”
这个错误不是网络问题,而是本地 composer.lock 和当前 PHP 版本、已启用扩展或平台配置不匹配。Composer 在安装前会校验 composer.lock 中每个包声明的 php、ext-xxx 等平台要求是否满足。