应使用 --ignore-platform-reqs 跳过平台校验,该参数强制忽略 PHP 版本、扩展及 INI 配置检查,适用于 CI、Docker 等场景,但生产环境不推荐长期使用。
composer
install 时卡在“Checking platform settings”怎么办
这是 Composer 7.x+ 默认行为:安装前强制校验 PHP 版本、扩展、INI 配置是否匹配
中的
声明。网络本身不参与这一步,但很多人误以为是“网络检查”,其实是本地环境校验失败或超时(比如某些扩展检测会触发外部命令或扫描慢路径)。
真正要绕过的不是“网络”,而是平台校验逻辑本身。最直接的办法是加
:
它跳过所有
、
、
的版本比对,包括
里写的
这类 INI 设置
适用于 CI 构建、Docker 多阶段构建、或你明确知道当前环境“虽然不完全匹配但能跑通”的场景
⚠️ 不推荐在生产部署中长期使用 —— 比如跳过
检查,运行时真缺这个扩展,报错会更晚、更难定位
为什么加了 --no-scripts 还是卡在 platform check
只禁用
字段定义的钩子(如
),和平台校验完全无关。校验发生在依赖解析之后、脚本执行之前,属于 Composer 自身安装流程的硬性前置步骤。
如果你发现加了
仍卡住,说明问题不在脚本,而在平台校验本身 —— 很可能是某个扩展检测阻塞了,比如:
在旧版 PHP 上尝试加载失败并 hang 住
自定义
脚本被第三方插件注入(少见,但存在)
PHP 配置中
禁用了
或
,导致 Composer 内部调用失败后无限重试
此时唯一有效解法仍是
,或手动清理掉引发问题的
声明项。
composer create-project 怎么跳过平台检查
和
一样,
也默认做平台校验。它甚至更严格,因为还要处理模板包本身的依赖约束。
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
必须显式传参:
不能只写
或
,它们不影响校验逻辑
如果项目
里写了
,而你本地是 8.2,不加该参数会直接报错退出,不会进到下载环节
某些私有仓库模板会把
设得非常死,这时候
是唯一能继续的路
绕过检查后 vendor/autoload.php 加载失败?
跳过平台检查 ≠ 绕过运行时依赖。常见坑是:你用
强行装了要求
的包,但系统没装这个扩展 ——
成功了,可一运行就报
。
这类问题不会在安装时报错,只能靠测试暴露。建议:
CI 中至少跑一次
类似的检查,而不是只信 Composer 输出
开发机上用
对照看哪些扩展实际缺失
容器部署时,别只 COPY vendor,记得确认基础镜像已装好对应扩展(例如
)
平台检查被跳过的地方,就是 runtime 报错开始的地方。这点容易被忽略,尤其当错误信息不指向扩展名而是某个类时。
composer.jsonplatform--ignore-platform-reqscomposer install --ignore-platform-reqsphpext-*lib-* platform.configopcache.enableext-gd--no-scriptsscriptspost-install-cmd--no-scriptsext-igbinaryplatform-checkdisable_functionsshell_execexec--ignore-platform-reqsplatforminstallcreate-projectcomposer create-project laravel/laravel myapp --ignore-platform-reqs--no-interaction--quietcomposer.json"config": {"platform": {"php": "8.3.0"}}platform--ignore-platform-reqs--ignore-platform-reqsext-sodiumcomposer installClass 'SodiumException' not foundphp -m | grep sodiumcomposer show --platformdocker-php-ext-install sodium