Composer installation failed报错 通用安装失败排查步骤【全攻略】

11次阅读

composer安装失败主因是本地环境或网络问题,需依次排查:①curl/php命令是否存在及版本(PHP≥7.2.5、curl可用);②ssl证书验证失败时更新CA或配置代理;③校验installer签名是否匹配官网SHA-384值;④临时目录权限是否正常且未被杀软拦截。

Composer installation failed报错 通用安装失败排查步骤【全攻略】

Composer 安装失败不是 Composer 本身的问题,绝大多数情况是本地环境或网络策略导致的——先别删重装,按顺序查这四点。

curl 或 php 命令不可用或版本过低

安装脚本本质是用 curl 下载安装器,再用 php 执行。任一缺失或版本太老都会卡在第一步。

  • 运行 which curlwhich php,确认命令存在;windows 用户检查是否已将 php.execurl.exe 加入系统 PATH
  • 执行 php -v,确保 PHP ≥ 7.2(Composer 2.x 要求 ≥ 7.2.5;PHP 8.0+ 更稳妥)
  • 执行 curl --version,若报错或输出为空,说明未安装或被防火墙拦截;macos 可用 brew install curl,Windows 推荐直接下载含 curl 的 PHP 集成包(如 XAMPP、WAMP)
  • 某些 linux 发行版默认不带 curl(如最小化 centos),需手动 yum install curlapt install curl

SSL 证书验证失败或 httpS 被拦截

官方安装地址 https://getcomposer.org/installer 强制 HTTPS,国内部分企业网络、代理或旧 OpenSSL 会拒绝校验。

  • 临时绕过验证(仅排查用):php -r "copy('http://getcomposer.org/installer', 'composer-setup.php');" → 但不推荐长期使用 HTTP
  • 更安全的做法:更新 CA 证书包,Linux/macOS 运行 sudo update-ca-certificatesbrew install ca-certificates;Windows 用户可尝试切换到最新版 OpenSSL(如 git for Windows 自带)
  • 若使用代理,确认代理支持 CONNECT 隧道,并设置环境变量:export https_proxy=http://127.0.0.1:8080(注意是 https_proxy,不是 http_proxy
  • 错误典型提示:cURL Error 60: SSL certificate problemunable to get local issuer certificate

安装脚本校验失败(Installer signature mismatch)

Composer 官方要求对下载的 installer 文件做 SHA-384 校验,任何中间篡改(如镜像源替换不当、CDN 缓存污染)都会触发失败。

  • 不要手动修改安装命令中的哈希值;务必从 官网下载页 复制最新 EXPECTED_SIGNATURE
  • 避免使用非官方一键脚本(尤其某些中文教程里的“国内加速版”),它们常跳过校验或硬编码旧哈希
  • 手动校验方式:php -r "echo hash_file('sha384', 'composer-setup.php');",对比输出是否与官网一致
  • 若用国内镜像,应只配置安装后 composer config -g repo.packagist composer https://packagist.phpcomposer.com 类型的源,而非替换安装器下载地址

权限不足或 tmp 目录不可写

安装过程需在临时目录解压、写入 composer.phar,Linux/macOS 下常见于 root 权限误用或 /tmp 挂载为 noexec。

  • 禁止用 sudo php composer-setup.php 全局安装(会导致后续权限混乱);应普通用户执行,再手动移动:mv composer.phar /usr/local/bin/composer
  • 检查 php -i | grep 'upload_tmp_dir|sys_temp_dir',确认返回路径可写;也可临时指定:php -d sys_temp_dir=/path/to/writable/dir composer-setup.php
  • macOS 上若用 Homebrew 安装 PHP,/tmp 可能被 SIP 限制,建议改用 $HOME/tmp
  • Windows 用户注意:杀毒软件(尤其 360、腾讯电脑管家)可能拦截 .phar 文件生成,临时关闭或添加信任

真正难排查的往往不是哪一步错了,而是多个小问题叠加——比如 PHP 版本够但 OpenSSL 不支持 TLS 1.2,或 curl 可用但被公司代理静默重定向到内网页面。建议每步验证输出,而不是只看最终是否生成 composer.phar

text=ZqhQzanResources