真正卡住运行环境的只有 require.php;platform 是给依赖解析看的“假身份”,不是运行时守门员。

仅靠 config.platform.php 无法限制项目“只能在特定 PHP 版本下运行”——它只骗过依赖解析,不拦运行时。
require.php 才是真正的运行门槛
这是唯一能阻止 composer install 在不兼容环境中执行的配置。Composer 会拿它和 php -v 的结果比对,不满足就直接报错退出。
- 必须写在
composer.json的require块里,例如:"php": ">=8.1.0"或"php": "^8.2" - 写
"php": "8.1"无效:Composer 会把它当作^8.1.0解析,但语义模糊,容易引发意外匹配 - 写
"php": "^8.1.0"也不推荐:Composer 不识别补零写法,会被忽略或误判 - 如果某个依赖包要求
php: "^8.3",而你只写了"php": ">=8.1.0",Composer 仍会拒绝安装——子依赖约束优先级更高
config.platform.php 只影响依赖选哪个版本
它让 Composer “假装”运行在某个 PHP 版本下,从而跳过那些声明了更高版本要求的包(比如 monolog/monolog v3 要求 php: ^8.1,你在 platform 设为 "php": "8.0.30" 就不会装 v3)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须放在
config→platform下,不能写在顶层 - 值必须是字符串,如
"8.0.30"或"8.1.*";写数字8.1会被忽略 - 它不校验你本地 PHP 是否真满足项目需求,也不触发
composer validate的环境检查 - 对已存在的
composer.lock无强制刷新作用,除非加--update-with-dependencies或--lock
命令行 --platform=php:x.y.z 优先级最高
适用于 CI、临时构建或 lock 文件已锁定但目标环境更低的情况。它在 install 和 update 阶段都生效,且覆盖 composer.json 中所有 platform 配置。
- 正确写法:
composer install --platform=php:8.0.30(注意冒号,无引号) - 错误写法:
--platform=php_version=8.0(等号语法错)、--platform=mbstring:1.2(缺ext-前缀) - 可叠加多个:
--platform=php:8.0.30 --platform=ext-gd:8.0.30 --platform=ext-mbstring:8.0.30 - 它不解决运行时问题:哪怕用
--platform=php:8.2成功装了包,真跑在 PHP 8.0 上遇到match表达式还是会ParseError
真正卡住运行环境的只有 require.php;platform 是给依赖解析看的“假身份”,不是运行时守门员。最容易被忽略的是:即使 composer install 成功了,只要没配 require.php,上线后第一行含新语法的代码就会崩。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










