composer install 仅根据 composer.lock 还原依赖,确保环境一致;composer require 才新增包并更新 composer.json 和 composer.lock。

composer install 和 composer require 有什么区别?
装包时最常混淆的是这两个命令:composer install 和 composer require。前者只读取项目根目录下的 composer.lock 文件,还原已有依赖版本;后者才真正“新增”一个包,并写入 composer.json、更新 composer.lock。
常见错误现象:composer install 报错 “Your requirements could not be resolved”,往往是因为本地没有 composer.lock,或它和 composer.json 不一致——这时不该硬跑 install,而应确认是否要新增包,再决定用 require。
- 团队协作中,新成员必须用
composer install(不带参数),确保环境和上线一致 - 你自己加功能要引入新库,比如
monolog/monolog,就运行composer require monolog/monolog -
composer require --dev phpunit/phpunit会把包加到require-dev区域,避免上线环境误装测试工具
安装失败时先看这三行错误信息
Composer 报错通常很长,但关键线索就藏在开头几行。重点关注:
- 是否出现
Your lock file does not contain a compatible set of packages?说明composer.lock已过期,删掉它再跑composer install(或直接composer update,但要小心) - 是否提示
Could not find package xxx at any version?检查拼写、仓库源是否可用(比如私有 GitLab 地址没配repositories)、PHP 版本是否低于包要求(看包的composer.json中php字段) - 是否卡在
Loading composer repositories with package information?大概率是源慢或挂了,换国内镜像:composer config -g repo.packagist composer https://packagist.phpcomposer.com(注意:该镜像已停,推荐用https://mirrors.aliyun.com/composer/)
如何指定 PHP 版本或平台配置避免兼容问题?
有些包声明只支持 PHP 8.1+,但你的 CLI 是 7.4,composer require 就会拒绝安装——这不是 bug,是 Composer 的平台检测机制在起作用。
千博企业网站管理系统个人版免费下载、免费使用、功能无限制,完全免费拥有(请尊重开发者版权,保留首页底部版权显示):内含Flash动画源码、Access数据库程序包、SQL数据库程序包。 千博企业网站管理系统个人版特点: 1.全站模块化操作,静态标签调用,更强扩展性… 千博企业网站系统个人版是一套基于.Net + Access(SQL)建站管理系统软件、不依赖于服务商特定空间、不需安装任何空间商组
解决方法不是降级包,而是告诉 Composer:“我实际部署的环境是 PHP 8.1,现在只是本地开发用 7.4 调试”。通过 config 设置平台:
composer config platform.php 8.1.20
这样 Composer 就按 8.1 去解析依赖约束,同时不会影响你本地 PHP 运行时。
- 该配置写入当前项目的
composer.json的config.platform字段,不会污染全局 - 除
php外,还可设ext-gd、ext-mbstring等扩展,模拟目标服务器环境 - 若 CI 构建失败提示扩展缺失,优先查
platform是否漏配,而不是急着装扩展
vendor 目录权限和自动加载失效怎么办?
运行 composer install 后,vendor/autoload.php 无法被 require,或报 Class not found,多数不是 Composer 没装好,而是 autoloader 没刷新。
- 改过
composer.json的autoload配置(如加了psr-4映射)后,必须执行composer dump-autoload,否则新规则不生效 - 如果
vendor是从别处复制来的(比如 tar 包解压),可能缺少vendor/composer/autoload_*.php文件,此时必须重新跑composer install,不能只复制目录 - Linux 下若用 root 装过包,普通用户后续操作可能因
vendor权限被拒,建议始终用非 root 用户执行所有composer命令
composer.json 后,别以为改完就完事了——dump-autoload 和 install 的触发时机,得看改的是哪一块。









