PHP 7.3 下 Composer 安装失败因依赖要求 PHP ≥8.0,若确认代码完全兼容,可执行 composer config platform.php "7.3.33" 后 composer update --lock 强制以 7.3.33 解析依赖,但该方案仅限本地调试,存在运行时风险。

PHP 7.3 环境下 Composer 安装失败,报错类似 Your requirements could not be resolved 或明确提示 requires php ^8.0 but your PHP version (7.3.x) does not satisfy that requirement,本质是目标包(或其依赖)在 composer.json 中声明了高于 7.3 的 PHP 版本约束。此时若无法升级 PHP,且你**已确认代码可在 PHP 7.3 下实际运行**(例如:仅用兼容写法、未调用 8.0+ 新语法或函数),可临时使用 platform 配置“伪造”平台版本——但必须严格遵循操作逻辑,否则会埋下运行时错误隐患。
确认是否真能兼容 PHP 7.3
这不是可跳过的步骤。伪造 platform 前,请核实:
- 项目及所有依赖中未使用 PHP 8.0+ 特性(如联合类型、
match表达式、str_contains()、new Foo()构造器属性提升等) - 关键扩展(如
mbstring、json、curl)版本满足各包要求 - 若有 CI/CD 或团队协作,该方案仅限本地调试,不可提交到共享配置中
实操:为当前项目设置 platform.php
在项目根目录执行以下命令(注意是当前项目,非全局):
composer config platform.php "7.3.33"
该命令会在 composer.json 的 config 字段下添加:
立即学习“PHP免费学习笔记(深入)”;
"config": {
"platform": {
"php": "7.3.33"
}
}
⚠️ 不要写成 "7.3" 或 "^7.3" —— platform 要求精确版本字符串,Composer 会按字面匹配。
重写锁文件并安装
仅设 platform 不生效。必须强制 Composer 重新解析依赖并更新锁文件:
composer update --lock
之后再运行:
composer install
此时 Composer 将以 “PHP 7.3.33” 为基准筛选兼容版本,不再拒绝安装。
风险与替代建议
伪造 platform 是权宜之计,存在明显局限:
- 它不改变 PHP 运行时行为——语法错误、函数不存在等问题仍会在运行时爆发
- 若后续有人在 PHP 8.1 环境下执行
composer install,可能因锁文件记录了低版本包而引发新冲突 - 更稳妥的长期解法是:降级目标包版本(查 packagist.org 找支持 PHP 7.3 的历史版本),或改用
--ignore-platform-req=php参数临时绕过(仅跳过校验,不污染配置)



















