Composer 安装失败主因是 PHP CLI 环境不全,必须满足 PHP ≥7.2(Laravel 10+ 需 8.1+)且启用 openssl、mbstring、json、zlib 四扩展;校验安装脚本 SHA-384 确保安全;权限与 PATH 配置影响命令可用性;国内建议配置阿里云镜像加速。

PHP 环境不全,composer 直接报错退出
Composer 不是独立程序,它依赖 PHP CLI 和至少 4 个扩展:`openssl`、`mbstring`、`json`、`zlib`。缺一个,安装或运行时就会崩——比如 file_get_contents(): php_network_getaddresses: getaddrinfo failed 是 openssl 没开,JSON decode error 多半是 json 扩展没装。
- 先检查:
php -v(必须 ≥ 7.2,Laravel 10+ 强制要 PHP 8.1+) - 再确认扩展:
php -m | grep -E "openssl|mbstring|json|zlib",漏了就补: - CentOS 7(用 Remi 仓库):
yum install php-opcache php-mbstring php-xml php-zip php-curl php-gd - CentOS 8/9:
dnf install php-cli php-mbstring php-xml php-zip php-curl
下载安装脚本但校验失败,Installer corrupt
官方要求校验 SHA-384,跳过可能载入损坏或被劫持的安装器。别图省事直接 curl | php——生产环境尤其不能。
- 进临时目录:
cd /tmp - 下载脚本:
curl -sS https://getcomposer.org/installer -o composer-setup.php - 取最新签名(动态获取,比硬编码更可靠):
EXPECTED_CHECKSUM="$(curl -sS https://composer.github.io/installer.sig)" - 校验:
php -r "if (hash_file('sha384', 'composer-setup.php') === '$EXPECTED_CHECKSUM') { echo 'OK'; } else { echo 'FAIL'; unlink('composer-setup.php'); }" - 只在输出
OK后才执行:php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer 命令找不到,明明 mv 过了
常见错因不是没移动,而是权限或 PATH 问题。比如 mv composer.phar /usr/local/bin/composer 后没加执行权限,或者用户 shell 的 $PATH 没包含 /usr/local/bin(虽然 CentOS 默认有,但某些最小化安装或非交互式 shell 会丢)。
- 赋权必须做:
sudo chmod +x /usr/local/bin/composer - 验证路径:
echo $PATH | grep '/usr/local/bin',没有就临时加:export PATH="/usr/local/bin:$PATH"(写进~/.bashrc或/etc/profile.d/composer.sh持久生效) - 新开终端后测试:
which composer应返回/usr/local/bin/composer
装完跑 composer require 特别慢甚至超时
默认走 packagist.org,国内直连大概率卡死。这不是 Composer 本身问题,是网络路由和 DNS 导致的连接不稳定或延迟高。
- 换国内镜像(推荐阿里云):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -g repo.packagist应输出阿里云地址 - 注意:镜像同步有数分钟延迟,新包可能稍晚出现;若需最新 dev 分支,可临时切回官方源:
composer config -g --unset repos.packagist
最容易被忽略的是 PHP CLI 扩展完整性——它不报错到具体扩展名,只抛一堆 JSON 或网络异常,让人反复查网络、代理、DNS,结果发现只是少装了个 php-mbstring。装之前务必 php -m 过一遍。










