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-xxxphp 开头:

  • php 行:仅含版本号,例如 php 8.2.12 —— 这是 PHP_VERSION 常量值,不含 ZTSdebug 等编译标识
  • ext-xxx 行:每个已加载且被 Composer 检测到的扩展一行,格式为 ext-curl 8.2.12,版本号取自 PHP_VERSION(不是扩展自身的 curl_version()

注意:未启用的扩展(即使 .so 存在但未在 php.ini 中启用)不会出现;zend_extension(如 opcache、xdebug)默认也不会列出来 —— 它们不属于 ext-* 命名空间。

为什么某些扩展没出现在结果里?

常见原因包括:

立即学习“PHP免费学习笔记(深入)”;

  • 扩展未启用:检查 php -m | grep curlphp -i | grep 'curl.*enabled'
  • 扩展是 zend_extension 类型:如 opcachexdebugblackfirecomposer show --platform 完全忽略它们
  • 扩展名与 Composer 的命名规则不匹配:比如自定义扩展未遵循 ext-xxx 命名约定,不会被识别
  • Composer 使用了不同 PHP 可执行文件:运行 which composercomposer 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 的输出 —— 它太简略,漏掉关键信息是常态。