Composer 安装
Composer 是 PHP 生态系统中最重要的包管理器和依赖管理工具。它允许你声明项目所依赖的库,并自动为你安装和管理这些依赖。无论是 Laravel、Symfony 这样的现代框架,还是小型的 PHP 项目,Composer 都是不可或缺的基础工具。本节将详细介绍 Composer 在各种操作系统上的安装方法、国内镜像配置,以及基本的使用技巧。
前置知识
在阅读本节之前,你需要了解:
- PHP 基本环境已安装(PHP 5.3.2+,推荐 PHP 8.1+)
- 终端 / 命令行基本操作
- JSON 文件格式基础
- 包管理器的概念(类似 npm、pip、yarn)
Composer 概述
Composer 解决了 PHP 项目中的以下核心问题:
- 依赖管理 — 声明项目需要的库,自动下载和安装
- 版本控制 — 精确控制每个依赖的版本范围
- 自动加载 — 生成 PSR-4 自动加载文件,无需手动
require - 项目脚手架 — 通过
create-project快速创建框架项目 - 仓库生态 — 访问 Packagist 上的海量 PHP 包
系统要求
# 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 系统:
# 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 安装
# 一行命令完成安装
curl -sS https://getcomposer.org/installer | php
# 验证安装
php composer.phar --version方法三:使用 Homebrew 安装(macOS)
# macOS 推荐使用 Homebrew 安装
brew install composer
# 验证安装
composer --version设置为全局命令
安装完成后,建议将 Composer 移动到系统 PATH 中,使其可以在任何位置使用:
# 方式一:移动 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 安装
方法一:官方安装程序(推荐)
- 访问 Composer 官方下载页面
- 下载
Composer-Setup.exe(Windows 安装程序) - 运行安装程序,按向导操作
- 安装程序会自动检测 PHP 安装路径
- 选择是否安装到 PATH(推荐勾选)
方法二:使用命令行安装
# 使用 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 安装
# 使用 Scoop 包管理器
scoop install composer
# 验证
composer --version验证安装
安装完成后,通过以下命令验证 Composer 是否正确安装:
# 查看 Composer 版本
composer --version
# 输出示例:Composer version 2.7.7 2024-06-10 13:40:26
# 查看详细版本信息(包括 PHP 版本和 PHP 运行模式)
composer diagnosecomposer 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: OKcomposer diagnose
composer diagnose 是非常有用的诊断命令,它可以帮你快速定位常见的安装和配置问题。如果你遇到 Composer 运行异常,第一步就应该运行 composer diagnose。
更新 Composer
Composer 本身可以自我更新到最新版本:
# 更新到最新稳定版
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 composer、apt upgrade composer),而不是 composer self-update。
在 Docker 容器或 CI/CD 环境中,通常不需要更新 Composer,直接在构建时使用指定版本。
国内镜像配置
由于网络原因,中国大陆用户访问 Packagist(Composer 的默认包仓库)可能速度很慢。配置国内镜像可以大幅提升依赖下载速度。
查看当前镜像
# 查看当前配置的镜像源
composer config -g repo.packagist composer show
# 查看全局配置
composer config -g -l配置阿里云镜像
# 方式一:全局配置(所有项目生效)
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配置腾讯云镜像
# 全局配置腾讯云镜像
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/其他可用镜像
# 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 的文件位置
# 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 示例:
{
"config": {
"process-timeout": 300,
"preferred-install": "dist",
"sort-packages": true
},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
}
}
}Composer 环境变量
Composer 支持通过环境变量控制行为:
# 设置 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 配置项
# 设置默认安装方式(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 示例:在 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:
services:
app:
build: .
ports:
- "8080:8080"
volumes:
- .:/app
environment:
- APP_ENV=development注意事项
1. PHP 环境问题
# 如果 composer 命令找不到
# 检查是否在 PATH 中
which composer
# 如果 php 命令找不到
which php
# 确保 PHP CLI 已安装(不是仅安装了 PHP-FPM)
php -v2. 权限问题
# 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/vendor3. Composer 1.x vs 2.x
# 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 环境)
# 在 CI/CD 环境中,建议使用精确版本的 Composer
# 而不是 latest
# Dockerfile 中推荐做法:
COPY --from=composer:2.7.7 /usr/bin/composer /usr/bin/composer
# 或使用安装脚本指定版本:
php composer-setup.php --version=2.7.72. 使用 composer.lock 版本控制
# 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
# 定期检查新版本
composer self-update --dry-run
# 更新到最新稳定版
composer self-update下一节
你已经成功安装并配置了 Composer,接下来将学习 composer.json 配置文件的详细结构,了解如何声明项目的依赖和元数据。