Composer 在 Linux 上需手动下载 composer.phar 并移至 /usr/local/bin,设执行权限后即可全局调用;不推荐 apt/yum 安装,因版本滞后且易冲突;遇“command not found”查 PATH,“Permission denied”查文件权限,PHP 扩展缺失需单独启用。

Composer 在 Linux 上不是“安装”而是“下载并设为全局可执行”,它本身只是一个 composer.phar 文件,没有传统意义上的安装过程。直接用 php 运行它即可,但要让 composer 命令在任意目录生效,关键在于把 composer.phar 放到系统 PATH 中的某个目录(如 /usr/local/bin),并确保有执行权限。
怎么下载并设为全局命令(Ubuntu/Debian 和 CentOS/RHEL 通用)
最稳妥的方式是手动下载官方 PHAR 并软链接或复制到 /usr/local/bin —— 不依赖包管理器,避免版本滞后或权限问题。
- 先确认系统已安装 PHP 且版本 ≥ 7.2(推荐 ≥ 8.0):
php -v - 下载最新稳定版:
curl -sS https://getcomposer.org/installer | php,会生成当前目录下的composer.phar - 移动并重命名(需 root 权限):
sudo mv composer.phar /usr/local/bin/composer - 赋予执行权限:
sudo chmod +x /usr/local/bin/composer - 验证:
composer --version应输出版本号
注意:不要用 php composer.phar 长期调用,那只是临时运行;真正“可用”是指输入 composer 就能执行。
为什么不用 apt/yum 直接装(Ubuntu/Debian 或 CentOS 的包管理器)
系统仓库里的 composer 包通常严重过时(例如 Ubuntu 22.04 自带的是 2.2.x,而官方已发布 2.7+),且可能被修改过行为(比如硬编码镜像源、禁用某些插件机制)。更麻烦的是,部分发行版(如 CentOS Stream)根本不提供 composer 包。
- Ubuntu:
sudo apt install composer→ 安装的是旧版,且可能依赖系统 php-cli 版本,与你实际项目用的 PHP 不一致 - CentOS:
yum install php-composer→ 多数版本无此包;dnf install php-composer(RHEL 9+/AlmaLinux 9+)→ 同样陈旧,且不保证更新频率 - 一旦用包管理器装了,卸载时容易残留
/usr/bin/composer,和你自己放的/usr/local/bin/composer冲突,导致which composer找到的是旧版本
遇到 “Permission denied” 或 “Command not found” 怎么查
这两个错误最常见,原因很具体,不是 Composer 本身的问题,而是环境配置没走通。
-
bash: composer: command not found→ 检查which composer,如果没输出,说明/usr/local/bin不在你的$PATH中(尤其在非登录 shell 或 systemd 服务里);可临时加:export PATH="/usr/local/bin:$PATH",永久写入~/.bashrc或/etc/profile.d/composer.sh -
Permission denied→ls -l /usr/local/bin/composer看权限是否含x(如-rwxr-xr-x);若没有,补上sudo chmod +x /usr/local/bin/composer - PHP 报错如
Mcrypt extension is required(老版本)或ext-zip not loaded→ 这是 PHP 缺扩展,不是 Composer 安装失败;运行php -m | grep -E 'zip|openssl|mbstring'确认必需扩展已启用
国内用户要不要配镜像源(阿里云、腾讯云等)
要,但不是安装阶段配,而是在首次运行 composer init 或 composer install 前配。Composer 官方源在国外,直连慢且易超时,但镜像源配置和安装完全无关。
- 全局设置阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -g repo.packagist应返回该 URL - 注意:不要在
/root下配完就以为全系统生效;普通用户需各自运行一次config -g,或改项目级composer.json - 有些镜像(如华为云)偶尔同步延迟,若遇到
Package not found,可临时切回官方源:composer config -g repo.packagist composer https://packagist.org
真正的难点不在下载命令,而在 PATH、PHP 扩展、用户权限这三层叠加判断——多数人卡住,是因为只盯着 composer 这个词,却没看 which php 和 echo $PATH 输出了什么。










