Composer 安装成功需同时满足:PHP CLI 二进制与扩展(openssl、zlib、json、mbstring)严格对齐;composer.phar 校验 SHA384 后安装;/usr/local/bin 在 PATH 中且文件有执行权限;必须配置阿里云镜像源并确认生效。

能跑 composer --version 不代表 Composer 真装好了——90% 的失败发生在 PHP CLI 环境没对齐或扩展缺失上。
检查 PHP CLI 是否真满足 Composer 最低要求
很多人卡在 composer --version 报错,却反复重装 Composer。其实问题根本不在它身上,而在 PHP CLI 缺关键扩展或路径指向错误。
-
php -m | grep -E "openssl|zlib|json|mbstring"必须四行全有输出;缺mbstring是 CentOS 7 上最常见漏装项(尤其用 Remi 源装的php74-php-cli) - 运行
which php和php -v,确认两者指向同一二进制;若which php返回空或/usr/bin/env: php: No such file or directory,说明系统没注册 CLI PHP 命令,得补软链:ln -s /usr/bin/php74 /usr/local/bin/php - 别只信
php -v——它不检查扩展是否启用;php -i | grep -E "openssl\.enabled|zlib\.version|json\.version|mbstring\.extension"才算实锤
下载安装必须校验 SHA384,跳过就等于埋雷
直接 curl -sS https://getcomposer.org/installer | php 看似快,但一旦网络抖动或 CDN 缓存异常,生成的 composer.phar 极可能损坏,后续所有 composer install 都会静默失败或报 JSON decode error 这类无从排查的错。
- 分步执行更稳:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - 取签名(
wget在 CentOS 7 上常因 SSL 支持弱失败,改用curl更可靠):HASH=$(curl -sS https://composer.github.io/installer.sig) - 校验并清理:
php -r "if (hash_file('sha384', 'composer-setup.php') === '$HASH') { echo 'OK'; } else { echo 'FAIL'; unlink('composer-setup.php'); }" - 校验通过后才安装:
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
设为全局命令前,先确认 PATH 和权限双生效
mv composer.phar /usr/local/bin/composer 后敲 composer 仍提示 command not found?不是命令写错了,而是两个基础条件没同时满足。
- 确认
/usr/local/bin在当前用户$PATH中:echo $PATH | grep '/usr/local/bin';若无,需在~/.bashrc或/etc/profile中追加export PATH="/usr/local/bin:$PATH"并source - 确保可执行:
chmod +x /usr/local/bin/composer;CentOS 7 默认不继承执行位,漏这步就会报Permission denied - 验证脚本头是否正确:
head -n1 /usr/local/bin/composer应输出#!/usr/bin/env php;如果不是,说明安装时没走对 PHP 解释器路径
国内环境必须配阿里云镜像源,且要用当前用户执行
不配镜像,composer create-project 可能卡死在 Downloading laravel/laravel,或报 Could not fetch https://packagist.org/packages.json ——这不是网络问题,是 Packagist 官方源在国内不稳定。
- 全局配置(对当前用户生效):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 别用
sudo composer config -g ...,那会把镜像写进 root 用户配置,普通用户执行时依然走默认源 - 验证是否生效:
composer config -g repo.packagist应输出https://mirrors.aliyun.com/composer/ - 如果项目已初始化,还需进项目目录执行一次
composer config repo.packagist composer https://mirrors.aliyun.com/composer/覆盖本地配置
最易被忽略的是:Composer 启动时依赖的 php 命令,和你用来检查扩展的 php 命令,必须是同一个二进制。哪怕只差一个 minor 版本、少一个扩展,composer create-project laravel/laravel 就可能崩在 problem 1 - installation request 这种模糊提示上,而日志里连具体哪行出错都不显示。











