Mac装Composer应弃用Homebrew旧包,先装Homebrew版PHP(≥7.4),再用官方脚本下载composer.phar并移至对应路径(M系列/opt/homebrew/bin,Intel/usr/local/bin),赋权后配置PATH并source生效,最后配置阿里云镜像源。

Mac 上装 Composer,别用 brew install composer —— 这个包自 2023 年起已被 Homebrew 标记为 deprecated,M1/M2 芯片上大概率卡在 v2.2.x、报 Permission denied 或根本找不到命令。真正能跑通的路径只有一条:先装 Homebrew 版 PHP,再用官方脚本生成 composer.phar,手动移到正确路径并赋权,最后配镜像源。
确认 PHP 是否真可用,不是“有 php -v 就算数”
macOS 12+ 已彻底移除系统自带 PHP,/usr/bin/php 是空壳或旧版(比如 PHP 8.0 以下),而 Composer 要求 CLI 版本 ≥ 7.4,Apache 模块里的 PHP 不算数。
- 运行
which php:M 系列应返回/opt/homebrew/bin/php,Intel 应为/usr/local/bin/php;若返回/usr/bin/php或为空,说明没走 Homebrew 的 PHP - 运行
brew install php—— 它会自动装最新稳定版(如 PHP 8.3),并启用phar扩展(Composer 必需) - 如果
php -v仍失败,检查~/.zshrc是否含export PATH="/opt/homebrew/bin:$PATH"(M 系列)或对应 Intel 路径,然后执行source ~/.zshrc
用官方脚本安装 composer.phar,别信 brew install composer
Homebrew 的 composer 包已弃用,官方唯一推荐方式是下载 composer.phar 并部署到系统可执行路径——版本新、ARM64 兼容、不绑定错误 PHP 版本。
- 执行
curl -sS https://getcomposer.org/installer | php,生成本地文件composer.phar - M1/M2 用户移到:
sudo mv composer.phar /opt/homebrew/bin/composer - Intel 用户移到:
sudo mv composer.phar /usr/local/bin/composer - 立刻赋权:
sudo chmod +x /opt/homebrew/bin/composer(路径必须一致,否则Permission denied)
which composer 返回空?那是环境变量根本没生效
很多人 composer --version 在家目录能跑,一进项目目录就报 command not found,本质是命令没真正进 $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或/usr/local/bin/composer
不配阿里云镜像源,composer install 十次九超时
默认源 https://packagist.org 在国内访问极不稳定,composer create-project 或 require 动不动卡在 Resolving dependencies 或直接报 Connection timed out,这不是你网络问题,是源本身不可靠。
- 执行:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -g repo.packagist应输出镜像地址 - 注意:项目级
composer.json中设了私有 repo 时,全局镜像不会覆盖它,优先级合理
最常被忽略的一点:改完 ~/.zshrc 后没运行 source,或者开了新终端但忘记重新加载配置 —— 这会导致反复重装、怀疑人生。配环境变量不是“写完就完”,是“写完 + 生效 + 验证”。











