composer怎么在Linux安装_Ubuntu/CentOS安装composer方法

2次阅读

应使用官方安装脚本而非包管理器,因apt/yum安装的composer多为过时且不兼容的1.x版本,存在安全风险与依赖解析失败问题,官方脚本可确保安装最新2.x版并自动适配php环境。

composer怎么在Linux安装_Ubuntu/CentOS安装composer方法

直接用官方安装脚本最稳,别碰包管理器里的旧版本

为什么不能用 apt install composeryum install composer

ubuntu 官方源里 composer 版本普遍卡在 1.x(比如 Ubuntu 22.04 是 2.0.14 但 22.10 又退回 1.10),centos/RHEL 的 EPEL 里更是长期停留在 composer-1.10.21;而 Composer 2.x 起已不兼容 PHP 7.2 以下,且 1.x 自 2022 年底起停止安全更新。装错版本会导致 composer installPackage operations: 0 installs, 0 updates, 0 removals 却不报错,或 Could not find a version of package xxx matching your minimum-stability 这类诡异依赖解析失败。

  • Ubuntu/debian:系统源的 composer 是阉割版,没打包 phar 运行时依赖,实际执行会提示 failed to open stream: No such file or Directory
  • CentOS/RHEL:EPEL 的 composer 默认绑定系统 PHP(常为 7.4),若你用 php8.1 管理多版本,它根本调不动
  • 所有包管理器安装的 composer 都不会自动写入 $PATH,得手动软链,还容易和后续手动安装冲突

用官方脚本安装(推荐)

这是官网唯一认证方式,生成的是完整 composer.phar,跟 PHP 版本解耦,且能自动检测本地 PHP 环境是否满足最低要求(PHP 7.2.5+)。

  • 先确认 PHP 可用:php -v 输出至少是 7.2.5,且没禁用 allow_url_fopenphp -i | grep allow_url_fopen
  • 下载并校验:
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae' ) { 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

    (注意不是 /usr/bin,避免被系统更新覆盖)

  • 验证:composer --version 应输出类似 Composer version 2.7.7

如果服务器无法访问 getcomposer.org(比如内网)

别用国内镜像站提供的“一键安装脚本”——它们常把 composer.phar 直接硬编码进脚本,升级机制失效;更糟的是部分镜像会悄悄替换校验哈希值。

  • 换用离线方式:在能联网机器上运行上面的校验步骤,确认无误后把 composer-setup.php 和生成的 composer.phar 拷贝过去
  • 本地安装:
    sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

    (此时 composer-setup.php 已含完整逻辑,不依赖外网)

  • 或者跳过 installer,直接下载最新 phar:
    sudo curl -sS https://www.php.cn/link/594ca739e3609243a6b6a3dd8d8711142.7.7/composer.phar -o /usr/local/bin/composer sudo chmod +x /usr/local/bin/composer

    (注意手动替换 URL 中的版本号,去 https://www.php.cn/link/594ca739e3609243a6b6a3dd8d871114 查最新)

装完还要改什么?

默认安装不设镜像源,国内用户跑 composer create-projectrequire 会卡在 Loading composer repositories with package information,这不是网络问题,是 packagist.org 域名解析慢+TLS 握手延迟导致的假死。

  • 全局启用阿里云镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • 别用 composer config -g repos.packagist(少个 o),那会创建空仓库配置,反而让命令报 Invalid repository type:
  • 如果项目已存在 composer.json,且里面写了 "repositories" 字段,全局镜像会被忽略——这时得在项目根目录下执行不带 -g 的命令
  • 验证镜像生效:composer show -p | grep -i mirror 应输出 mirrors.aliyun.com

真正麻烦的从来不是安装那几行命令,而是装完发现 composer update 依然慢、或者 CI 流水线里因为没设镜像而超时失败——这些都得在装完立刻验证,而不是等项目跑不起来才回头查。

text=ZqhQzanResources