必须依次解决php不可用、composer命令找不到、镜像未生效、权限被拒四类问题:先用homebrew安装php并配置path;再用官方脚本安装composer并设path;接着用-g参数正确配置阿里云镜像;最后修复vendor目录属主权限。

直接运行 composer install 在 macOS 新系统(12+)上失败,不是 Composer 本身有问题,而是系统级安全机制和默认环境不匹配——PHP 不可用、命令找不到、镜像没生效、权限被拒,这四类问题会依次拦住你,必须按顺序解决。
php -v 报错或版本太低,composer install 根本不会启动
macOS 12+ 已移除系统自带 PHP,/usr/bin/php 是空壳或 ≤7.3 的旧版,而 Composer 要求 CLI 版本 ≥7.4 且含 openssl 扩展。Apache 或 Nginx 加载的 PHP 模块不参与 Composer 运行,无效。
- 运行
which php:M 系列应输出/opt/homebrew/bin/php,Intel 应为/usr/local/bin/php;若返回/usr/bin/php或为空,说明没走 Homebrew PHP - 执行
brew install php(它会装最新稳定版,如 PHP 8.3,并启用phar和openssl) - 确认
~/.zshrc含export PATH="/opt/homebrew/bin:$PATH"(M 系列)或export PATH="/usr/local/bin:$PATH"(Intel),然后source ~/.zshrc - 再跑
php -v,输出必须 ≥7.4 且无警告;若仍报错,检查php --ini是否加载了正确php.ini,确保extension=openssl未被注释
composer 命令报 command not found,PATH 配置没真正生效
不是没装,是 shell 找不到可执行文件。Homebrew 的 composer 包自 2023 年起已弃用,M1/M2 上常卡在 v2.2.x 或 Permission denied,必须用官方脚本安装并手动配 PATH。
- 执行
curl -sS https://getcomposer.org/installer | php,生成composer.phar - M 系列:
sudo mv composer.phar /opt/homebrew/bin/composer;Intel:sudo mv composer.phar /usr/local/bin/composer - 立刻赋权:
sudo chmod +x /opt/homebrew/bin/composer(路径必须与上一步一致) - 在
~/.zshrc末尾加export PATH="/opt/homebrew/bin:$PATH"(M 系列)或export PATH="/usr/local/bin:$PATH"(Intel),然后新开终端 - 验证:
which composer必须输出上述路径,composer --version能正常返回;若只在安装目录下能跑,说明 PATH 没生效
composer install 卡在 “Loading composer repositories”,镜像配置静默失效
默认源 https://packagist.org 在国内访问极不稳定,但镜像配错一点就会完全失效——仍连官方源,你却毫无感知。关键就三处:参数、键名、URL 结尾。
- 必须带
-g参数,否则只改当前项目,还会污染composer.json的repositories字段 - 键名必须是
repo.packagist(单数,不是repos.packagist,少一个o或多一个s都无效) - URL 必须为
https://mirrors.aliyun.com/composer/,末尾/不能省——漏掉会导致 Composer 2.2+ 请求packages.json时 404,然后自动 fallback 到官方源 - 别用
sudo composer config -g,否则写进 root 用户的~/.composer/config.json,普通用户运行时读不到 - 执行后,进任意项目目录运行
composer config --list | grep repositories,有输出才说明全局镜像已生效
composer install 报 Permission denied,vendor 目录属主被污染
最常见诱因是误用 sudo composer install——它以 root 身份创建整个 vendor/ 目录树,后续普通用户无法写入,IDE、Git、php artisan 全部中断。
- 别重装,先修复归属:
sudo chown -R $(whoami):$(whoami) ./(注意结尾./,递归修复当前项目全部文件) - 如果只修
vendor:sudo chown -R $(whoami):$(whoami) vendor/ - 检查缓存目录是否也被污染:
composer config --global cache-dir,若输出~/.composer/cache,运行sudo chown -R $(whoami):$(whoami) ~/.composer - 永远避免
sudo composer global require;如需全局工具(如laravel/installer),改用composer global require --no-plugins - CI/Docker 中也要显式补权限:
chmod -R u+rwX vendor/,避免平台差异导致失败
四个环节环环相扣:PHP 不可用 → Composer 启动不了;Composer 命令找不到 → 镜像配了也白配;镜像没生效 → install 卡死;权限被拒 → 下载下来也跑不动。最容易被忽略的是 repo.packagist 键名拼写和 URL 末尾斜杠,它们不出错提示,只默默 fallback,你得主动验证。











