跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Composer怎么检查环境要求_Composer check-platform-reqs用法【常用】

composer check-platform-reqs 是 Composer 3.0+ 用于校验当前 PHP 环境是否满足 composer.json 中 platform 及依赖的 PHP 版本、扩展等约束的静态检查命令,不安装包,仅做环境兼容性验证。
composer check-platform-reqs
是 Composer 3.0+ 引入的官方命令,用于检查当前 PHP 环境是否满足项目
composer.json
中声明的
platform
或依赖包的
require
约束(比如
"php": "^8.1"
、
"ext-gd": "*"
)。它不安装任何包,只做静态环境校验——这是它和
composer install
的关键区别。 什么时候必须用
check-platform-reqs
当你遇到以下情况时,这个命令能快速定位问题根源: CI/CD 流水线里
composer install
失败,但报错模糊(比如 “Your requirements could not be resolved”),而你怀疑是 PHP 版本或扩展缺失 团队协作中,有人本地能装,有人不能,想快速比对平台兼容性 准备升级 PHP 版本前,提前验证现有
composer.json
是否兼容新环境
composer update
提示 “Package x requires ext-y, but it is not installed”,但你不确定是没启用还是根本没编译进 PHP
check-platform-reqs
的默认行为和常用选项 它默认只检查
composer.json
顶层的
require
和
config.platform
,不递归检查已锁版本(
composer.lock
)里的依赖约束。常见组合: 基础检查:
composer check-platform-reqs
—— 输出所有未满足项,状态码为 1 表示失败 只看失败项:
composer check-platform-reqs --fail-on-missing
—— 隐藏通过项,仅打印缺失扩展或版本不匹配项 包含已安装的包约束:
composer check-platform-reqs --with-dependencies
—— 会读取
composer.lock
,检查所有已锁定依赖的平台要求(更严格,也更慢) 指定 PHP 版本模拟:
composer check-platform-reqs --platform=php:8.2.10
—— 不依赖当前
php -v
,适合测试未来环境 和
composer diagnose
的核心区别
diagnose
关注 Composer 自身配置、网络、权限等运行时健康状况;
check-platform-reqs
只聚焦「PHP 解释器 + 扩展 + 版本号」是否满足项目声明的需求。两者互补,但目的不同: Composer 2.9.6 Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。 下载
diagnose
报 “The php.ini used by your command-line PHP is: /etc/php/8.1/cli/php.ini” → 是在告诉你 PHP 配置位置
check-platform-reqs
报 “ext-gd: missing (required by vendor/symfony/console)” → 是在告诉你缺扩展,且谁依赖它 如果你改过
config.platform
(比如强制设
"php": "7.4"
),
check-platform-reqs
会按这个假定值校验,而非真实 PHP 版本 容易被忽略的细节 这个命令不会检测扩展的**功能子集**。例如:
ext-curl
已加载,但 PHP 编译时没带
--with-openssl
,导致 curl 不支持 HTTPS ——
check-platform-reqs
无法发现。它只认
extension_loaded('curl')
返回 true 就算通过。 另外,某些扩展(如
ext-sodium
)在 PHP 7.2+ 是内建的,但 Windows 下可能仍需手动开启
php_sodium.dll
;命令只会检查是否加载,不区分“内建”还是“DLL”。如果扩展名拼写错误(比如写成
sodium
而非
sodium
),也会误报为缺失。

相关文章