执行 php -m 检查 CLI 环境真实启用的扩展,确认 ext-mbstring、ext-xml、ext-curl 等是否在列表中,并核对 php --ini 显示的配置文件路径及 extension= 行是否启用。

composer install 报 “ext-xxx is missing” 怎么确认真实缺失项
错误信息里写的 ext-mbstring、ext-xml、ext-curl 等,不是建议项,是目标包明确声明的运行依赖。别只看 PHP 页面(phpinfo),CLI 环境可能加载了不同 php.ini。
执行以下命令验证真实状态:
-
php -v—— 确认 CLI 使用的 PHP 版本是否与项目要求一致 -
php -m | grep -E "mbstring|xml|curl|openssl|json|zip"—— 检查扩展是否已启用(注意:simplexml和dom属于xml扩展族,但有时需单独启) -
php --ini—— 找到 CLI 实际加载的php.ini路径,打开它确认对应extension=行未被注释
宝塔、Docker 或 WAMP 环境下常见“假缺失”场景
有些环境看似装了扩展,实则被安全策略禁用,或函数被屏蔽。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 宝塔用户:进 PHP 设置 → “禁用函数”,检查是否误禁了
proc_get_status、putenv、shell_exec—— 这些不是扩展,但 Composer 运行时会调用,禁用后报错常伪装成“扩展缺失” - Docker 镜像:Alpine 镜像默认不带
xml,需加apk add php-dom php-simplexml;Debian/Ubuntu 镜像需确保安装php-xml包(不是libxml2-dev) - WAMP/XAMPP:Windows 下
php_mbstring.dll可能存在于ext/目录但未在php.ini中启用,注意路径分隔符和 DLL 文件名大小写
临时绕过 vs 真实修复:什么时候能用 --ignore-platform-reqs
加 --ignore-platform-reqs 不是解决问题,是跳过校验——装完大概率运行时报 Class not found 或 Call to undefined function mb_strlen()。
- 仅限本地快速验证逻辑,且你 100% 确认该扩展后续不会被代码调用
- CI/CD 或生产部署绝对禁止使用,它会让
composer install失去“可重现性”这一核心价值 - 如果必须用,至少搭配
composer diagnose先输出缺失项,再针对性补环境,而不是无脑加参数
扩展装了却 still missing?重点查这三处
最常被忽略的是“装了但没生效”,尤其多版本 PHP 共存时。
-
php -i | grep "Loaded Configuration File"输出的php.ini路径,和php --ini是否一致?不一致说明 CLI 加载了错误配置 - 某些 Linux 发行版(如 Ubuntu)把扩展配置拆到
/etc/php/*/cli/conf.d/下独立文件,确认对应20-mbstring.ini类文件存在且未被;注释 - 重启服务:修改
php.ini后,CLI 不需要重启任何服务,但如果你在 Web 环境测试,Apache/Nginx 必须 reload,否则看到的仍是旧状态
composer install 的最后一关,往往不是网络或权限,而是某个扩展在 CLI 下静默失效——别急着重装 PHP,先用 php -m 看一眼,比猜快十倍。

















