应使用官方脚本安装Composer:先用Homebrew安装PHP≥8.1并确保/opt/homebrew/bin/php在PATH中,再执行curl -sS https://getcomposer.org/installer | php生成composer.phar,移至/opt/homebrew/bin/composer并sudo chmod +x,最后配置阿里云镜像源。

别用 brew install composer —— 这个命令在 2026 年已彻底失效,不是“可能出问题”,而是根本不会装对:路径错、PHP 绑错、版本卡在 v2.2.x、composer --version 直接报 Permission denied 或 command not found。M1/M2 上唯一稳定路径是:用 Homebrew 装好原生 PHP,再用官方脚本生成 composer.phar,手动部署到正确位置并赋权。
确认 Homebrew 和 PHP 已就位且路径正确
Composer 是 PHP 写的,没可用的 CLI PHP,它根本起不来。macOS 12+ 已移除系统 PHP,/usr/bin/php 是空壳或 PHP 8.0,不满足 Composer 2.5+(需 ≥ 8.1)。
-
which brew必须输出/opt/homebrew/bin/brew;若为/usr/local/bin/brew,说明装的是 Intel 版,需卸载重装 ARM64 原生版 -
brew install php(自动启用phar、openssl、fileinfo、curl扩展) -
php -v应输出 ≥ 8.1 的版本;which php必须是/opt/homebrew/bin/php - 若
php命令报错,检查~/.zshrc是否含eval "$(/opt/homebrew/bin/brew shellenv)"并已source ~/.zshrc;别手写PATH=行
用官方脚本安装 composer.phar 并部署到系统路径
Homebrew 的 composer 包自 2023 年起被标记为 deprecated,当前稳定路径是下载 PHAR 并手动部署——确保版本新、ARM64 兼容、绑定你刚装的 PHP。
- 执行:
curl -sS https://getcomposer.org/installer | php,当前目录生成composer.phar - M1/M2 用户运行:
sudo mv composer.phar /opt/homebrew/bin/composer - 立刻赋权:
sudo chmod +x /opt/homebrew/bin/composer(缺这步必报Permission denied) - 验证:
composer --version应输出类似Composer version 2.7.7
PATH 没生效?不是没装,是 shell 没读到
常见现象:composer --version 报 command not found,但 ls /opt/homebrew/bin/composer 确实存在。本质是 shell 没加载 Homebrew 的 bin 目录。
-
echo $SHELL确认是/bin/zsh(macOS Catalina 及以后默认) - 编辑
~/.zshrc,末尾加:eval "$(/opt/homebrew/bin/brew shellenv)" - 然后运行:
source ~/.zshrc - 别手写
export PATH="/opt/homebrew/bin:$PATH"—— 官方方式能同步管理所有 Homebrew bin 子目录(如share、sbin)
国内用户不配镜像源,等于白装
默认源 https://packagist.org 在国内访问极不稳定,composer install 十次九卡在 “Resolving dependencies”,甚至直接报 Connection timed out。这不是 Composer 的 bug,是基础设施现实。
- 配置阿里云镜像源:
composer config -g repo.packagist https://mirrors.aliyun.com/composer/ - 验证是否生效:运行
composer show,看输出中repositories是否指向阿里云地址 - 如果仍慢,检查是否漏了
-g(全局配置),或被项目级composer.json中的repositories覆盖
最常被忽略的其实是 PHP 扩展状态和镜像源作用域——php -m | grep -E '^(openssl|fileinfo|curl)$ 缺任意一个,Composer 都可能静默失败;而镜像源没加 -g,只在当前目录生效,切项目就退回原源。


















