Skip to content

Composer 安装

Composer 是 PHP 生态系统中最重要的包管理器和依赖管理工具。它允许你声明项目所依赖的库,并自动为你安装和管理这些依赖。无论是 Laravel、Symfony 这样的现代框架,还是小型的 PHP 项目,Composer 都是不可或缺的基础工具。本节将详细介绍 Composer 在各种操作系统上的安装方法、国内镜像配置,以及基本的使用技巧。

前置知识

在阅读本节之前,你需要了解:

  • PHP 基本环境已安装(PHP 5.3.2+,推荐 PHP 8.1+)
  • 终端 / 命令行基本操作
  • JSON 文件格式基础
  • 包管理器的概念(类似 npm、pip、yarn)

Composer 概述

Composer 解决了 PHP 项目中的以下核心问题:

  1. 依赖管理 — 声明项目需要的库,自动下载和安装
  2. 版本控制 — 精确控制每个依赖的版本范围
  3. 自动加载 — 生成 PSR-4 自动加载文件,无需手动 require
  4. 项目脚手架 — 通过 create-project 快速创建框架项目
  5. 仓库生态 — 访问 Packagist 上的海量 PHP 包

系统要求

bash
# Composer 要求的最低 PHP 版本
# PHP 5.3.2+(但 PHP 已于 2019 年停止支持 5.x)
# 推荐 PHP 8.1+ 以获得完整功能支持

# 检查 PHP 版本
php -v

# 检查必要的 PHP 扩展
php -m | grep -E "json|phar|filter|hash|openssl|curl"

# 这些扩展通常默认启用
# - json      — JSON 处理
# - phar      — Phar 归档(Composer 自身就是 phar 包)
# - filter    — 数据过滤
# - hash      — 哈希算法
# - openssl   — HTTPS 连接
# - curl      — 网络请求(可选,但推荐)

Linux / macOS 安装

方法一:官方安装脚本(推荐)

这是 Composer 官方推荐的安装方式,适用于大多数 Linux 和 macOS 系统:

bash
# 1. 下载 Composer 安装脚本
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

# 2. 验证安装脚本的完整性(SHA384 校验)
php -r "if (hash_file('sha384', 'composer-setup.php') === file_get_contents('https://composer.github.io/installer.sig')) { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

# 验证通过后输出:
# Installer verified

# 3. 运行安装脚本
php composer-setup.php

# 4. 删除安装脚本
php -r "unlink('composer-setup.php');"

安装完成后,当前目录下会生成 composer.phar 文件,这就是 Composer 的可执行文件。

方法二:使用 cURL 安装

bash
# 一行命令完成安装
curl -sS https://getcomposer.org/installer | php

# 验证安装
php composer.phar --version

方法三:使用 Homebrew 安装(macOS)

bash
# macOS 推荐使用 Homebrew 安装
brew install composer

# 验证安装
composer --version

设置为全局命令

安装完成后,建议将 Composer 移动到系统 PATH 中,使其可以在任何位置使用:

bash
# 方式一:移动 composer.phar 到全局目录
sudo mv composer.phar /usr/local/bin/composer

# 方式二:创建符号链接
sudo ln -s /path/to/composer.phar /usr/local/bin/composer

# 验证全局安装
composer --version

关于 /usr/local/bin

/usr/local/bin 是系统 PATH 中常见的目录。你也可以选择其他 PATH 中的目录,如 ~/.local/bin/usr/bin。使用 echo $PATH 查看当前 PATH 列表。

Windows 安装

方法一:官方安装程序(推荐)

  1. 访问 Composer 官方下载页面
  2. 下载 Composer-Setup.exe(Windows 安装程序)
  3. 运行安装程序,按向导操作
  4. 安装程序会自动检测 PHP 安装路径
  5. 选择是否安装到 PATH(推荐勾选)

方法二:使用命令行安装

cmd
# 使用 PowerShell
# 1. 下载安装脚本
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

# 2. 运行安装
php composer-setup.php

# 3. 删除安装脚本
php -r "del composer-setup.php"

# 4. 将 composer.phar 复制到 PATH 目录
copy composer.phar C:\php\composer.phar
# 或
move composer.phar C:\bin\composer.phar

# 确保 C:\php 或 C:\bin 在系统 PATH

方法三:使用 Scoop 安装

powershell
# 使用 Scoop 包管理器
scoop install composer

# 验证
composer --version

验证安装

安装完成后,通过以下命令验证 Composer 是否正确安装:

bash
# 查看 Composer 版本
composer --version
# 输出示例:Composer version 2.7.7 2024-06-10 13:40:26

# 查看详细版本信息(包括 PHP 版本和 PHP 运行模式)
composer diagnose

composer diagnose 输出示例:

Checking composer.json: OK
Checking platform settings: OK
Checking git: OK
Checking git executable: OK (2.39.0)
Checking http connections to packagist: OK
Checking github API rate limit: OK
Checking disk free space: OK
Checking composer version: OK

composer diagnose

composer diagnose 是非常有用的诊断命令,它可以帮你快速定位常见的安装和配置问题。如果你遇到 Composer 运行异常,第一步就应该运行 composer diagnose

更新 Composer

Composer 本身可以自我更新到最新版本:

bash
# 更新到最新稳定版
composer self-update

# 更新到指定的版本
composer self-update 2.7.0

# 更新到下一个预发布版本
composer self-update --preview

# 回退到上一个版本
composer self-update --rollback

# 查看当前版本
composer --version

自我更新限制

如果 Composer 是通过包管理器(如 Homebrew、apt、Scoop)安装的,请使用对应的包管理器更新命令(brew upgrade composerapt upgrade composer),而不是 composer self-update

在 Docker 容器或 CI/CD 环境中,通常不需要更新 Composer,直接在构建时使用指定版本。

国内镜像配置

由于网络原因,中国大陆用户访问 Packagist(Composer 的默认包仓库)可能速度很慢。配置国内镜像可以大幅提升依赖下载速度。

查看当前镜像

bash
# 查看当前配置的镜像源
composer config -g repo.packagist composer show

# 查看全局配置
composer config -g -l

配置阿里云镜像

bash
# 方式一:全局配置(所有项目生效)
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

# 方式二:仅当前项目配置
composer config repo.packagist composer https://mirrors.aliyun.com/composer/

# 取消镜像配置,恢复默认源
composer config -g --unset repos.packagist

配置腾讯云镜像

bash
# 全局配置腾讯云镜像
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/

其他可用镜像

bash
# Packagist 官方中国镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com

# 上海交通大学镜像
composer config -g repo.packagist composer https://packagist.mirrors.sjtug.sjtu.edu.cn

镜像同步延迟

国内镜像通常每 5~15 分钟同步一次 Packagist。如果你刚发布了新包,可能需要等待几分钟后才能在镜像中看到。如果对实时性要求很高,可以考虑直接使用官方源或搭建私有镜像。

安装目录说明

Composer 的文件位置

bash
# Composer 可执行文件位置
which composer
# /usr/local/bin/composer

# Composer 全局配置文件
# ~/.composer/config.json    (Linux/macOS)
# %APPDATA%\Composer\config.json  (Windows)

# Composer 缓存目录
# ~/.composer/cache/          (Linux/macOS)
# %LOCALAPPDATA%\Composer\cache\ (Windows)

# Composer 全局安装的包
# ~/.composer/vendor/         (Linux/macOS)

# Composer Home 目录(可通过环境变量 COMPOSER_HOME 修改)
echo $COMPOSER_HOME
# 如果未设置,默认为 ~/.composer

全局配置文件

Composer 的全局配置文件 config.json 示例:

json
{
    "config": {
        "process-timeout": 300,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://mirrors.aliyun.com/composer/"
        }
    }
}

Composer 环境变量

Composer 支持通过环境变量控制行为:

bash
# 设置 Composer Home 目录
export COMPOSER_HOME=/opt/composer

# 禁用交互提示(CI/CD 环境推荐)
export COMPOSER_NO_INTERACTION=1

# 设置 Composer 缓存目录
export COMPOSER_CACHE_DIR=/tmp/composer-cache

# 禁用插件执行(安装依赖时)
export COMPOSER_ALLOW_PLUGIN=0

# Composer 禁用 TLS 验证(仅调试用,不推荐)
# export COMPOSER_DISABLE_NETWORK=1

常用 Composer 配置项

bash
# 设置默认安装方式(dist 或 source)
# dist — 下载压缩包(速度快,推荐)
# source — 克隆 Git 仓库(获取最新源码)
composer config -g preferred-install dist

# 设置进程超时时间(秒)
composer config -g process-timeout 600

# 设置安装时是否排序包
composer config -g sort-packages true

# 设置 Composer 使用 PHP 二进制文件路径
composer config -g php /usr/bin/php8.3

# 设置 Composer 不使用 SSL 证书验证(仅调试用)
# composer config -g --disable-tls true
# composer config -g --secure-http false

# 查看 Composer 全局配置
composer config -g -l

# 查看特定配置项
composer config -g preferred-install

实战示例:Docker 中安装 Composer

dockerfile
# Dockerfile 示例:在 Docker 中安装 PHP 和 Composer

FROM php:8.3-cli-alpine

# 安装系统依赖
RUN apk add --no-cache \
    curl \
    git \
    zip \
    unzip

# 安装 Composer
COPY --from=composer:2.7 /usr/bin/composer /usr/bin/composer

# 设置工作目录
WORKDIR /app

# 验证安装
RUN php --version && composer --version

# 复制项目文件
COPY composer.json ./
COPY composer.lock ./

# 安装依赖
RUN composer install --no-dev --no-interaction --optimize-autoloader

# 复制源代码
COPY . .

# 入口
CMD ["php", "-S", "0.0.0.0:8080", "-t", "public"]

对应的 docker-compose.yml

yaml
services:
  app:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - .:/app
    environment:
      - APP_ENV=development

注意事项

1. PHP 环境问题

bash
# 如果 composer 命令找不到
# 检查是否在 PATH 中
which composer

# 如果 php 命令找不到
which php

# 确保 PHP CLI 已安装(不是仅安装了 PHP-FPM)
php -v

2. 权限问题

bash
# Linux/macOS 下安装全局 composer 需要权限
sudo mv composer.phar /usr/local/bin/composer

# 如果使用 composer install 时遇到权限问题
sudo chown -R $USER:$USER ~/.composer
sudo chown -R $USER:$USER /path/to/project/vendor

3. Composer 1.x vs 2.x

bash
# Composer 2.x 相比 1.x 有重大性能改进:
# - 依赖解析速度提升 10~100 倍
# - 内存使用减少 70%
# - 支持并行下载
# - 更好的平台要求检查

# 如果还在使用 Composer 1.x,请尽快升级
composer self-update --2

# Composer 2.x 最低要求 PHP 7.2+
# 推荐使用 PHP 8.1+ 获得完整支持

最佳实践

1. 锁定 Composer 版本(CI/CD 环境)

bash
# 在 CI/CD 环境中,建议使用精确版本的 Composer
# 而不是 latest

# Dockerfile 中推荐做法:
COPY --from=composer:2.7.7 /usr/bin/composer /usr/bin/composer

# 或使用安装脚本指定版本:
php composer-setup.php --version=2.7.7

2. 使用 composer.lock 版本控制

bash
# composer.lock 记录了精确的依赖版本
# 必须将其纳入版本控制

git add composer.json composer.lock
git commit -m "Add composer configuration"

# 团队开发中:
# - composer.json 声明版本范围
# - composer.lock 锁定精确版本
# - 部署时使用 composer.lock 确保环境一致
# composer install  (读取 composer.lock,安装精确版本)
# composer update   (更新所有依赖到最新版本,更新 composer.lock)

3. 定期更新 Composer

bash
# 定期检查新版本
composer self-update --dry-run

# 更新到最新稳定版
composer self-update

下一节

你已经成功安装并配置了 Composer,接下来将学习 composer.json 配置文件的详细结构,了解如何声明项目的依赖和元数据。

参考链接