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

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