composer show --platform 仅显示 PHP 版本号(如 php 8.2.12)和已启用的 ext-* 扩展(如 ext-curl 8.2.12),不包含 zend_extension、php.ini 路径、SAPI 类型等完整环境信息。

composer show --platform 显示哪些 PHP 环境信息?
composer show --platform 不显示完整的 PHP 运行时环境,只列出 Composer 自身识别出的、已加载的 PHP 扩展 和 PHP 版本号。它不输出 php.ini 路径、扩展配置参数、SAPI 类型(如 CLI/FPM)、或系统架构等细节。
它实际输出的内容结构是怎样的?
输出分两部分,全部以 ext-xxx 或 php 开头:
-
php行:仅含版本号,例如php 8.2.12—— 这是PHP_VERSION常量值,不含ZTS、debug等编译标识 -
ext-xxx行:每个已加载且被 Composer 检测到的扩展一行,格式为ext-curl 8.2.12,版本号取自PHP_VERSION(不是扩展自身的curl_version())
注意:未启用的扩展(即使 .so 存在但未在 php.ini 中启用)不会出现;zend_extension(如 opcache、xdebug)默认也不会列出来 —— 它们不属于 ext-* 命名空间。
为什么某些扩展没出现在结果里?
常见原因包括:
立即学习“PHP免费学习笔记(深入)”;
- 扩展未启用:检查
php -m | grep curl或php -i | grep 'curl.*enabled' - 扩展是
zend_extension类型:如opcache、xdebug、blackfire,composer show --platform完全忽略它们 - 扩展名与 Composer 的命名规则不匹配:比如自定义扩展未遵循
ext-xxx命名约定,不会被识别 - Composer 使用了不同 PHP 可执行文件:运行
which composer和composer config --global --list | grep bin-dir,确认它调用的是你预期的那个php
想看完整环境信息,该用什么命令?
依赖场景选对应命令:
- 看所有已加载扩展(含 zend_extension):
php -m
- 看详细配置和扩展参数:
php -i
(可配合grep,如php -i | grep -A5 'curl') - 看 PHP 版本及编译选项:
php -v && php -r "print_r(get_defined_constants(true)['zlib'] ?? []);"
(后者示例仅为扩展能力探测) - 验证当前 Composer 使用的 PHP:
composer --version --no-ansi 2>&1 | head -1
并对比php --version
真正需要扩展兼容性诊断时,别只信 --platform 的输出 —— 它太简略,漏掉关键信息是常态。











