--ignore-platform-reqs不是跳过检查,而是关闭校验硬装,运行时仍会因缺扩展、语法不兼容或函数不存在而崩溃;它仅跳过安装前环境比对,不验证真实可用性,易致线上故障。

直接加 --ignore-platform-reqs 不是“跳过检查”,而是关掉校验开关后硬装——运行时缺扩展、语法不兼容、函数不存在,照样炸,而且炸得无声无息。
为什么 --ignore-platform-reqs 容易引发线上故障
它只跳过安装前的环境比对,不验证真实可用性:
-
--ignore-platform-reqs不检查你本地有没有ext-redis,但new Redis()仍会报Class 'Redis' not found - 锁文件里记录的是 PHP 8.2 解析的依赖,你在 PHP 8.1 上用该参数装完,运行时遇到
match表达式或readonly类直接Fatal error - 它也不管系统库,比如
lib-curl版本太低导致 Guzzle HTTP 请求静默失败,错误日志里只显示空响应
--ignore-platform-req=xxx 的适用边界在哪
精准跳过某一项的前提,是你已确认其余项全部达标:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 只用
--ignore-platform-req=php:必须确保所有扩展(ext-gd、ext-mbstring等)和系统库版本与依赖要求一致 - 只用
--ignore-platform-req=ext-gd:必须确认 PHP 版本、其他扩展、lib-jpeg等底层库都满足图像处理包的实际运行需求 - 叠加多个时,顺序无关,但每一项都要人工核对——比如
--ignore-platform-req=php --ignore-platform-req=ext-igbinary,就得同时确认 PHP 小版本兼容、且igbinary扩展虽未启用但不会被任何代码路径触发
永久关闭 platform-check 的隐含代价
在项目 composer.json 里设 "platform-check": false 后,Composer 不再报错,但也不会提醒你环境漂移:
- CI 构建机升级 PHP 到 8.3,而你本地还是 8.2,没人发现
config.platform早已失效 -
composer update仍按config.platform模拟解析,但实际运行环境已不匹配,新选的包可能带 8.3-only 特性 - Git 提交时没人 review 这个配置变更,团队新人拉代码后直接
composer install,本地跑不通却以为是自己环境问题
最危险的不是参数本身,而是“装成功了”带来的虚假安全感——真正要兜底的,从来不是命令行选项,而是部署前对 php -v、php -m、ldconfig -p | grep curl 的逐项比对,以及一次最小路径的运行时 smoke test。

















