Mac 上全局安装 Composer 的正确方法是用官方脚本下载 composer.phar 并手动部署到 Homebrew 路径,确保 PHP 8.0+ 已通过 brew 安装、PATH 正确配置(编辑 ~/.zshrc 并 source)、以及配置阿里云镜像源,否则易出现 command not found 或超时。

Mac 上全局安装 Composer,不能靠 Homebrew install composer —— 这个包自 2023 年起已被弃用,装了也大概率 command not found 或卡在旧版本。 正确做法是:用官方脚本下载 composer.phar,手动移进系统 PATH,并确保 PHP 环境就绪。整个过程 5 分钟内可完成,但有三个关键点必须对齐:PHP 版本、目标路径、PATH 生效方式。
确认 PHP 已安装且可用
macOS 12+(Monterey 及之后)已彻底移除系统自带 PHP,php -v 报错或显示 PHP 8.0 以下,都不能直接用。
- 先检查:
which brew—— M1/M2 应输出/opt/homebrew/bin/brew;Intel 是/usr/local/bin/brew - 再装 PHP:
brew install php(自动装最新稳定版,如 PHP 8.3) - 验证:
php -v有输出,且which php指向/opt/homebrew/bin/php(M 系列)或/usr/local/bin/php(Intel) - 如果
php还不可用,检查~/.zshrc是否含export PATH="/opt/homebrew/bin:$PATH"(M 系列)并执行source ~/.zshrc
用官方脚本安装 composer.phar 到正确路径
Homebrew 的 composer 包不再维护,版本陈旧、路径混乱,尤其在 Apple Silicon 上极易出错。官方唯一推荐方式是 curl 安装脚本生成 PHAR 文件,再手动部署。
- 执行:
curl -sS https://getcomposer.org/installer | php→ 当前目录生成composer.phar - 移动到全局可执行路径:
• M1/M2 Mac:sudo mv composer.phar /opt/homebrew/bin/composer
• Intel Mac:sudo mv composer.phar /usr/local/bin/composer - 赋执行权限:
sudo chmod +x /opt/homebrew/bin/composer(或对应路径) - 验证:
composer --version输出类似Composer version 2.7.7才算成功
PATH 配置必须生效,且验证要跨目录
很多用户卡在这一步:以为装好了,其实只是当前目录能跑 ./composer,换到 ~/Sites/myproject 就报 command not found —— 本质是 /opt/homebrew/bin(或 /usr/local/bin)没真正进 shell 的 $PATH。
- 先确认当前 shell:
echo $SHELL,输出/bin/zsh就编辑~/.zshrc(不是.bash_profile) - 在
~/.zshrc末尾加一行:export PATH="/opt/homebrew/bin:$PATH"(M 系列)或export PATH="/usr/local/bin:$PATH"(Intel) - 立即生效:
source ~/.zshrc—— 这步漏掉,改了等于白改 - 验证是否真全局:
which composer必须返回/opt/homebrew/bin/composer(或对应路径),且在任意目录下运行composer --version都成功
配置国内镜像源(否则 90% 情况会超时)
默认源 https://packagist.org 在国内访问极不稳定,composer install 经常卡住或报 Connection timed out,这是最常被跳过的“必做项”。
- 执行:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -g repo.packagist应输出阿里云地址 - 不建议用
https://packagist.phpcomposer.com(已停用),也不要用未认证的第三方镜像
最容易被忽略的其实是三件事:改完 ~/.zshrc 没 source,which composer 返回的是当前目录下的文件而不是系统路径,以及压根没装新版 PHP。这三处一错,后面所有操作都在原地打转。










