composer install仅安装composer.lock锁定版本,不修改composer.json;composer require则添加包、更新依赖树并写入lock文件;无lock文件时需先require或init,而非直接install。

Composer 安装依赖不是“运行一个命令就完事”,关键看当前项目有没有 composer.json、PHP 环境是否就位、以及你用的是全局安装还是局部执行。
composer install 和 composer require 有什么区别
这两个命令触发的逻辑完全不同,选错会导致依赖没写进文件、或版本锁死失败。
-
composer install:只读取现有composer.lock(如果有),严格安装里面记录的版本。适合部署或协作后首次拉代码——它不改composer.json,也不重新解析依赖树。 -
composer require package/name:修改composer.json,添加该包,并立即计算依赖、下载、更新composer.lock。这是开发时加新功能的标准操作。 - 常见错误:在没有
composer.lock的项目里直接跑composer install,会报错Could not find a composer.lock file—— 此时应该用composer require或先composer init。
为什么运行 composer 命令提示 “command not found”
这不是 Composer 没装好,而是系统找不到可执行文件路径。Windows、macOS、Linux 处理方式不同,但本质都是 PATH 问题。
- 全局安装后(如用
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer),确认/usr/local/bin在你的$PATH里(Linux/macOS)或已加到系统环境变量(Windows)。 - Mac 用户用 Homebrew 装的,路径通常是
/opt/homebrew/bin/composer,得检查是否echo $PATH包含它。 - 别用
php composer.phar install代替全局命令——它能跑,但每次都要敲完整路径,且容易因 PHP 版本不一致导致 autoload 失败。
PHP 版本不匹配导致依赖安装失败
Composer 本身有最低 PHP 要求(目前是 7.2.5+),但更重要的是你声明的依赖包是否支持当前 PHP 版本。
- 错误现象:
Your requirements could not be resolved to an installable set of packages.+ 一堆package/name requires php ^8.1类提示。 - 查法:运行
php -v看实际版本;再看composer.json里"require": {"php": "..."}是否宽松(比如写成^7.4 || ^8.0更稳妥)。 - 临时绕过(仅调试):
composer install --ignore-platform-reqs,但上线前必须修复,否则可能 runtime 报错。 - 多版本共存时(如用
phpbrew或asdf),确保which php和composer --version调用的是同一个 PHP 二进制。
最常被跳过的一步:删掉 vendor/ 和 composer.lock 后,不验证 composer.json 里的 autoload 配置是否还有效——类自动加载失效往往不是 Composer 问题,而是 PSR-4 映射路径写错了。










