require.php 是声明项目真正依赖的 PHP 版本范围的官方推荐方式,如 "^8.1" 表示 ≥8.1.0 且

在 composer.json 中,PHP 版本兼容性通过 config.platform.php 和 require.php 两个字段控制,但作用不同:前者影响本地环境模拟,后者才是声明项目真正依赖的 PHP 版本范围。
使用 require.php 声明最低和最高 PHP 版本
require.php 是 Composer 官方推荐方式,用于明确项目运行所需的 PHP 版本约束。Composer 会据此检查当前环境是否满足要求,并在安装/更新时拒绝不兼容的版本。
- 最低版本写法:
"^8.1"表示 ≥ 8.1.0 且 - 精确最低 + 最高限制:
">=8.1.0, 表示支持 PHP 8.1 到 8.3 的所有小版本 - 排除特定次版本(如跳过有严重 bug 的 8.2.5):
">=8.1.0, !=8.2.5,
避免误用 config.platform.php 来“降级”PHP 兼容性
config.platform.php 不是声明兼容范围,而是告诉 Composer:“即使我本地装的是 PHP 8.3,也请按 PHP 8.1 的扩展和函数可用性来解析依赖”。它只影响依赖解析过程,不会改变项目实际能运行的 PHP 版本。
常见误用场景:为让 CI 通过而强行设 "config": {"platform": {"php": "7.4"}},结果代码用了 match 表达式(PHP 8.0+),运行时报错。这属于掩盖问题,不是真实兼容。
立即学习“PHP免费学习笔记(深入)”;
本书是全面讲述PHP与MySQL的经典之作,书中不但全面介绍了两种技术的核心特性,还讲解了如何高效地结合这两种技术构建健壮的数据驱动的应用程序。本书涵盖了两种技术新版本中出现的最新特性,书中大量实际的示例和深入的分析均来自于作者在这方面多年的专业经验,可用于解决开发者在实际中所面临的各种挑战。
结合 phpstan / psalm 验证 PHP 特性使用
仅靠 require.php 不能保证代码不调用高版本才有的函数或语法。建议搭配静态分析工具:
- PhpStan:配置
phpVersion: 80100(对应 8.1.0)可检测是否误用 8.2+ 新特性 - Psalm:设置
实现类似效果 - CI 中同时检查
composer install和静态分析,才能真正守住 PHP 版本边界
查看当前项目实际支持的 PHP 范围
运行以下命令可快速确认 Composer 解析出的有效 PHP 约束:
composer show --platform | grep php
输出类似 php: 8.1.0 表示当前解析到的最低版本;若想看完整约束表达式,可检查 composer.lock 中 platform 字段或直接读 composer.json 的 require.php 值。










