composer check-platform-reqs 是 Composer 2.2+ 内置命令,用于静态验证当前系统环境(PHP 版本、扩展等)是否满足 composer.json 中声明的平台要求,不安装或更新包,需在含 composer.json 的项目根目录执行。

composer check-platform-reqs 是什么
composer check-platform-reqs 是 Composer 2.2+ 内置命令,用于验证当前系统环境(PHP 版本、扩展、INI 设置等)是否满足 composer.json 中声明的 platform 或依赖包的平台要求。它不安装或更新任何包,只做静态检查。
运行 check-platform-reqs 的前提条件
必须在项目根目录(含 composer.json)下执行,否则会报错 Could not find composer.json。该命令默认读取当前项目的 composer.json,不会回退到全局配置或父目录。
- 确保已安装 Composer 2.2 或更高版本:
composer --version
- 确认
composer.json中存在require或config.platform声明(例如"php": "^8.1") - 若项目未锁死平台版本(如没设
config.platform.php),则检查的是依赖包自身声明的php要求
常见错误输出及对应原因
当 PHP 版本不匹配时,check-platform-reqs 会明确标出不满足项,例如:
PHP >=8.1 required, you have 8.0.30
这类提示直接告诉你哪条约束失败。注意以下细节:
立即学习“PHP免费学习笔记(深入)”;
- 它检查的是
php扩展名(不是php-cli或php-fpm的 PATH 差异),所以请确认which php和php -v输出与 Composer 实际调用的一致 - 如果启用了
config.platform(如"config": {"platform": {"php": "8.1.0"}}),命令会优先按该值校验,而非系统真实版本 - 某些扩展要求(如
ext-gd)失败时,提示为ext-gd * required, you have none,需检查php -m | grep gd
如何让检查更严格或跳过某些项
该命令本身不支持跳过特定平台项,但可通过配置临时绕过:
- 加
--no-dev可忽略require-dev中的平台要求 - 若想强制按真实环境检查(忽略
config.platform),可临时注释或移除config.platform段再运行 - 检查结果为非零退出码(如
1),适合集成进 CI 脚本:composer check-platform-reqs || exit 1
真正容易被忽略的是:它不验证 php.ini 中的运行时设置(如 memory_limit 或 opcache.enable),这些需单独用 php --ini 和 php -r 'var_dump(ini_get("...")); 确认。











