应使用官方脚本安装composer:先用homebrew安装php(≥8.1),再执行curl -ss https://www.php.cn/link/e910517884e11c8a741c3b1da823f47e | php生成composer.phar,移至/opt/homebrew/bin/composer(m系列)或/usr/local/bin/composer(intel),sudo chmod +x赋权,并配置阿里云镜像源。

brew install composer 在 2026 年的 macOS(尤其是 Apple Silicon)上已不可靠,不是“偶尔失败”,而是包本身被 Homebrew 社区标记为 deprecated 并停止维护——你装出来的大概率是 v2.2.x 旧版,或根本找不到 composer 命令,即使 brew list composer 显示已安装。
真正能稳定复现、ARM64 兼容、且始终同步最新版(当前稳定版为 v2.7.7)的路径只有一条:用 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:Apple Silicon 必须输出/opt/homebrew/bin/brew;若为/usr/local/bin/brew,说明装错架构,需彻底卸载重装 - 运行
brew install php(自动启用phar扩展) - 验证
php -v输出 ≥8.1,且which php返回/opt/homebrew/bin/php(M 系列)或/usr/local/bin/php(Intel) - 若
php报错,检查~/.zshrc或~/.zprofile是否已执行eval "$(/opt/homebrew/bin/brew shellenv)"(推荐方式),而非手写PATH=行
用官方脚本安装 composer.phar 并部署到全局路径
Homebrew 的 composer 包不更新、不绑定你刚装的 PHP、也不适配 ARM64 路径,而官方脚本会自动调用本地 php,生成的 PHAR 天然兼容。
- 执行
curl -sS @#@#@#@#@#@#@#@#@#@0 | php→ 当前目录生成composer.phar - 移动并重命名:
- M1/M2:运行
sudo mv composer.phar /opt/homebrew/bin/composer - Intel:运行
sudo mv composer.phar /usr/local/bin/composer
- M1/M2:运行
- 立即赋权:
sudo chmod +x /opt/homebrew/bin/composer(路径必须与上一步一致,缺这步必报Permission denied) - 验证:
composer --version应输出类似Composer version 2.7.7
解决 command not found: composer 的真实原因
这不是没装成功,是 shell 没加载 Homebrew 的 bin 目录。现象:ls /opt/homebrew/bin/composer 存在,但终端敲 composer --version 报错。
- 确认 shell 类型:
echo $SHELL(Catalina 及以后默认是/bin/zsh) - 编辑
~/.zshrc,末尾加一行:eval "$(/opt/homebrew/bin/brew shellenv)"(M 系列)或eval "$(/usr/local/bin/brew shellenv)"(Intel) - 执行
source ~/.zshrc - 再验证:
echo $PATH | grep -o "/opt/homebrew/bin"(M 系列)应有输出
别手写 export PATH="/opt/homebrew/bin:$PATH" —— brew shellenv 才能自动适配路径、shell 类型和自定义安装位置。
国内用户必须配置阿里云镜像源
默认源 @#@#@#@#@#@#@#@#@#@1 在国内访问极不稳定,composer install 十次九超时,卡在 Resolving dependencies 或直接报 Connection timed out,这不是你网络差,是源站响应策略问题。
- 运行:
composer config -g repo.packagist composer @#@#@#@#@#@#@#@#@#@2 - 验证是否生效:
composer config -g repo.packagist应输出该镜像地址 - 注意:此配置只影响当前用户,不会覆盖项目级
composer.json中定义的私有仓库,优先级合理
最容易被忽略的点,是没确认 php 路径就急着装 composer —— 结果命令能敲出来,一执行就报 PHP Fatal error 或 Class 'Phar' not found,因为背后调用的其实是系统残留的旧 PHP,而不是你用 brew install php 装的那个。











