Composer 2.2 LTS是专为PHP 5.6–7.2.4及旧生态(如Laravel 5.8)设计的长期支持版本,支持至2025年底,兼容性、稳定性与可维护性兼备;必须用2.2而非2.3+,因2.3起强制要求PHP≥7.2.5。

为什么必须用 2.2 LTS 而不是 2.3+?
根本原因是 PHP 版本断层:Composer 2.3.0 起直接 丢弃对 PHP ,而你的错误信息 dropped support for PHP 就是典型信号。这不是报错配置问题,是运行时硬性拒绝。
- PHP 5.6/7.0/7.1 用户:只能用
Composer 2.2.x(如2.2.23),否则composer install直接 abort - 宝塔面板、某些 Docker 基础镜像、老旧 Debian 9/10 系统默认 PHP 版本常卡在 7.2 以下,升级 PHP 成本高,换 Composer 版本更现实
-
composer self-update --2.2不是降级补丁,而是切换到独立维护的 LTS 分支,其 bugfix 和安全更新仍持续推送(如 2025 年 11 月仍发布2.2.23)
如何精准安装并锁定 Composer 2.2 LTS?
别信 curl -sS https://getcomposer.org/installer | php —— 它默认拉最新版(即 2.3+),会再次踩坑。必须显式指定版本号:
curl -sS https://getcomposer.org/installer -o composer-setup.php
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e0012edf3e89b46749bb587335b889bd5123d23a3f93b47875c1a6084739e0b84e9a1f6d285335c33b1d9f3a9e7f8a1b2c') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=2.2.23
- SHA384 哈希值需从 Composer 官方签名页 获取最新值(2025 年末有效值已更新,不能复用旧教程哈希)
-
--version=2.2.23是关键参数,漏掉就会装成 2.3+ - 装完立刻验证:
composer --version输出应为Composer version 2.2.23 2025-11-05 12:34:56
企业环境里最容易忽略的两个陷阱
一是路径冲突:系统里可能同时存在 /usr/bin/composer(手动下载的 2.2)和 /usr/local/bin/composer(宝塔自动升级的 2.3)。which composer 显示后者,但 ls -l /usr/local/bin/composer 可能指向一个已被升级的脚本入口。
- 先清理旧入口:
rm -f /usr/local/bin/composer - 再软链到可信版本:
ln -s /usr/bin/composer /usr/local/bin/composer(假设/usr/bin/composer是你手动放的 2.2.23) - 或者更稳妥:直接用绝对路径调用,如
/usr/bin/composer install,绕过 PATH 污染
二是项目内误用全局版本:即使全局装了 2.2,若项目根目录有 composer.phar(比如 CI 流水线生成的),它会优先执行自身版本。务必检查:ls -la | grep composer,删掉残留的旧 composer.phar。










