composer安装失败主因是php缺失openssl、zlib、json、mbstring等关键扩展,需用php -m验证并yum显式安装对应扩展包,再校验签名、配置国内镜像源并确认php版本与composer版本匹配。

Composer 安装失败:常见报错和前置依赖检查
直接运行 curl -sS https://getcomposer.org/installer | php 却提示 file_get_contents(): php_network_getaddresses: getaddrinfo failed 或 JSON decode error,基本不是 Composer 的问题,而是 PHP 缺关键扩展。
-
openssl:没它连 HTTPS 都打不开,curl和证书校验全挂 -
zlib:解压 ZIP 包(比如 Laravel 框架下载)会直接失败 -
json和mbstring:解析composer.json、处理多字节字符(如中文包名、注释)时必用 - 检查命令别偷懒:
php -m | grep -E "openssl|zlib|json|mbstring",缺哪个就补哪个 - CentOS 7/8 默认 PHP 版本偏低,Laravel 10+ 要求 PHP ≥ 8.1;用
php -v看清实际版本,别信which php返回的软链
用 yum 安装 PHP 扩展:别只装 php-cli
很多人只执行 yum install php-cli 就以为够了,结果 composer.phar 跑到一半报错退出。CentOS 的 PHP 扩展是拆包的,必须显式安装。
- 基础组合(CentOS 7/8 通用):
yum install -y php-cli php-mbstring php-zip php-json php-opcache php-curl php-gd php-xml php-bcmath - 如果用 Remi 源装了 PHP 7.4/8.0/8.1,扩展名带版本前缀,例如
php74-php-mbstring,装错包名就白忙活 - 装完别忘了重启 PHP-FPM(如果用了):
systemctl restart php-fpm或systemctl restart php74-php-fpm - 验证是否生效:临时建个
test.php,写<?php echo extension_loaded('mbstring') ? 'ok' : 'fail'; ?>,用php test.php跑一下
安装 Composer 本身:跳过校验=埋雷
官方文档强调 SHA-384 校验不是形式主义。2025 年起,Composer 官网安装脚本已默认启用签名机制,跳过校验可能拿到被中间人篡改的 installer —— 它能静默往你项目里加恶意依赖。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 安全做法分三步:
cd /tmp && curl -sS https://getcomposer.org/installer -o composer-setup.php→php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd03d4901860b35878fc132609de12d9ab23573e50672b34f4c8ab91025c') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"→sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer - 快速安装(仅限可信内网测试机):
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer - 装完立刻验证:
composer --version,输出应含Composer version 2.x.x;如果还显示1.x,说明系统源里残留旧版,得卸载干净再重装
配置国内镜像源:packagist.phpcomposer.com 已停用
很多老教程还在教 composer config -g repo.packagist composer https://packagist.phpcomposer.com,这个地址 2024 年底已下线,执行后会报 Could not find package ... in a package repository。
- 当前可用镜像(任选其一):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/或https://mirrors.cloud.tencent.com/composer/ - 验证是否生效:
composer config -g -l | grep repos,看到repos.packagist对应值即成功 - 缓存目录建议改到非系统盘:
composer config -g cache-dir /data/composer-cache,避免/root/.composer/cache占满根分区 - 如果项目里已有
composer.json,首次composer install前先跑composer clear-cache,否则可能还走旧源
最常被忽略的一点:多个 PHP 版本共存时,composer 命令调用的是 #!/usr/bin/env php 解析出的默认 php,而不是你 php74 -v 看到的那个。装完务必 which php 和 php -v 对齐,否则扩展装对了也白搭。










