macOS 12+ 需用 Homebrew 安装 PHP(M1/M2 路径为 /opt/homebrew/bin/php,Intel 为 /usr/local/bin/php),并手动安装官方 composer.phar 至对应路径、配置环境变量与阿里云镜像源,缺一不可。

确认 PHP 是否真可用,而不是“有输出就完事”
macOS 12+ 已彻底移除系统自带 php,哪怕 php -v 能打出版本,也极可能是旧版(如 PHP 8.0 以下)或 Homebrew 安装路径错乱导致的假象。Composer 要求 PHP ≥ 7.4,且必须是 CLI 版本——Apache 模块里的 PHP 不算数。
- 运行
which php:M1/M2 Mac 应返回/opt/homebrew/bin/php;Intel Mac 应为/usr/local/bin/php。若返回空或/usr/bin/php,说明没走 Homebrew 安装的 PHP - 若未安装,先确保 Homebrew 是原生路径:
which brew输出应为/opt/homebrew/bin/brew(M 系列)或/usr/local/bin/brew(Intel),否则重装 - 执行
brew install php,它会自动装最新稳定版(如 PHP 8.3) - 若
php -v仍报错,检查~/.zshrc是否含export PATH="/opt/homebrew/bin:$PATH"(M 系列)或export PATH="/usr/local/bin:$PATH"(Intel),然后source ~/.zshrc
用官方脚本装 composer.phar,别碰 brew install composer
Homebrew 的 composer 包自 2023 年起已被标记为 deprecated,尤其在 M1/M2 上常出现 Permission denied、command not found: composer 或卡在 v2.2 等陈旧版本。官方唯一推荐方式是下载 composer.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
which composer 返回路径不对?那是环境变量没生效
很多人 composer --version 在家目录能跑,一进项目目录就报错,本质是没真正进 $PATH,只是靠当前路径临时执行。关键不是“写完 ~/.zshrc”,而是“写完 + source + 跨目录验证”。
- 先确认 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或/usr/local/bin/composer - 最后换到任意子目录(如
~/Sites/test)再试composer --version
不配国内镜像源,composer install 很大概率超时
默认源 https://packagist.org 在国内访问极不稳定,常见错误是卡住几小时后报 Connection timed out 或直接中断。这不是网络问题,是源服务器物理距离和路由策略导致的,必须主动切镜像。
- 配置阿里云镜像(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 也可选中科大镜像:
composer config -g repo.packagist composer https://mirrors.ustc.edu.cn/composer/ - 该命令只执行一次,
-g表示全局生效,后续所有项目都走这个源 - 如果已执行过但依然慢,可运行
composer config -g --list确认是否生效,或删掉重设
source、PHP 路径没对齐、镜像源漏配——这三处最容易反复折腾,不是步骤多,是每一步都有明确的验证点,跳过任一验证,后面全白忙。











