真正起效的只有 require.php 声明 + 正确刷新 composer.lock;require.php 在 composer install/update 时校验 php -v,不满足则报错退出,而 config.platform.php 仅影响依赖解析、不拦运行时。

仅靠 config.platform.php 无法限制项目“只能在特定 PHP 版本下运行”——它只是骗过依赖解析器,不拦运行时。真正起效的只有 require.php 声明 + 正确刷新 composer.lock。
require.php 是唯一能卡住 composer install 的配置
Composer 在执行 composer install 或 composer update 时,会拿 php -v 的结果和 require.php 的值比对,不满足就直接报错退出,不装包、不写 vendor。
-
"php": "^8.1"是推荐写法:表示支持 8.1.x ~ 8.9.x,但明确排除 9.0+(语义清晰,Composer 能正确识别) -
"php": "8.1"无效:会被当作^8.1.0解析,但实际行为不稳定,易误判 -
"php": ">=8.1.0"可用但不推荐:它允许 9.0+,无法防止因新语法(如enum、match)导致的运行时崩溃 - 必须写在
composer.json的require块里,不是config或其他位置
platform.php 只影响依赖解析,不解决运行时问题
config.platform.php 让 Composer “假装”运行在某个 PHP 版本下,目的是控制依赖选哪个版本,但它不校验你本地是否真满足要求,也不阻止代码在低版本上执行出错。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 值必须是完整小版本字符串,例如
"8.1.27"或"8.0.30";"8.1"、"^8.1"会被忽略 - 只在
composer update或首次生成composer.lock时生效;已有composer.lock不会自动刷新 - 若
require.php和platform.php冲突(比如require写"^8.2",platform设"8.1.27"),Composer 会报错:Your platform version '8.1.27' does not satisfy the required version '^8.2' - 命令行参数
--platform=php:8.1.27优先级最高,适合 CI 中临时覆盖,注意冒号、无引号、不能写等号
composer.lock 才是实际执行契约,不是 composer.json
composer.json 是意向声明,composer.lock 才是真正决定装什么的文件。哪怕 require.php 和 platform.php 都配对了,只要 composer.lock 是上次用 PHP 9.0 解出来的,composer install 就照装不误。
- 验证是否生效:删掉
vendor/和composer.lock,再跑composer install - 或强制重解:运行
composer update --lock,它会读取新require.php并重新生成锁文件 - 打开
composer.lock,搜索"platform": {"php",确认值是精确字符串(如"8.1.27"),不是"^8.1"或空 - CI/CD 中务必提交
composer.lock到 Git,并用composer install(不是update)还原
最容易被忽略的点:没配 require.php,却以为 platform 能兜底
很多人只改 config.platform.php,结果 composer install 成功了,上线第一行含 match 或 enum 的代码就崩。根本原因是:没有 require.php,Composer 根本不会在校验环节拦你;而 platform 只管“装什么”,不管“能不能跑”。
哪怕你在 CI 里用 --platform=php:8.1.27 成功装了包,真部署到 PHP 8.0 环境,遇到 match 表达式照样 ParseError —— 因为那行代码本身就不兼容。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










