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 会丢)。