--ignore-platform-reqs仅跳过PHP版本、扩展(ext-)和系统库(lib-)三类平台校验,不修复环境缺失,装完仍可能因Class 'Redis' not found或str_starts_with()等运行时错误崩溃。

别急着加 --ignore-platform-reqs —— 它不修复环境问题,只让安装跳过校验;装完就报 Class 'Redis' not found 或 Undefined function str_contains() 的概率极高。
为什么 composer install 突然卡在 platform requirements?
Composer 2.2+ 默认启用平台检查,它会比对三件事:
- 你本地真实 PHP 版本(
php -v)和composer.json中"require": {"php": "^8.2"}是否匹配 - 你已加载的扩展(
php -m)是否满足依赖包声明的"ext-gd": "*"、"ext-mbstring": "*" - 系统库(如
lib-curl)是否存在(ldconfig -p | grep curl)
常见触发点:CI 构建机 PHP 是 8.1,但 composer.lock 记的是 8.2+;本地没装 ext-redis,而 monolog 的某个版本硬 require 它;composer.json 里写了 "config": {"platform": {"php": "8.3.0"}},你本地是 8.2。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
--ignore-platform-reqs 到底跳过什么?
它只跳过三类检查:PHP 版本、PHP 扩展(ext-*)、系统库(lib-*)。不碰任何包版本约束,不改 composer.lock,也不影响依赖解析策略。
-
composer install --ignore-platform-reqs:全部跳过,最粗暴,风险最高 -
composer install --ignore-platform-req=php:只跳 PHP 版本,保留对ext-gd等扩展的检查(推荐) -
composer install --ignore-platform-req=ext-gd --ignore-platform-req=ext-igbinary:可叠加多个,值必须严格匹配(大小写敏感,ext-imagick不能写成imagick) -
--ignore-platform-reqs=true是无效写法,Composer 直接报错
composer create-project 也卡住?参数不能省
create-project 不仅下载模板,还会立刻执行 install,所以同样受平台检查限制。加了 --no-interaction 或 --quiet 也没用 —— 它们不干预平台校验。
- 必须显式传参:
composer create-project laravel/laravel myapp --ignore-platform-reqs - 如果项目
composer.json里有"config": {"platform": {"php": "8.3.0"}},你本地是 8.2,不加参数根本不会开始下载 -
--no-dev和--prefer-dist对平台检查完全无效
真正麻烦的不是装不上,而是装上了却崩在运行时
比如你用 --ignore-platform-reqs 强行装了 Laravel Octane,但它强依赖 ext-swoole;装完 php artisan octane:start 仍会报 Class 'Swoole\Http\Server' not found。又比如锁文件里记着一个只支持 PHP 8.2 的 symfony/console 版本,你本地是 8.1,composer install 成功了,但跑测试时遇到 str_starts_with() 就直接挂掉 —— 这些错误不会在安装阶段暴露,排查成本反而更高。

















