herd中composer config -g无效是因为其php沙盒覆盖composer_home指向私有路径,需在herd内置终端执行该命令并清缓存、删lock文件和vendor目录才能生效。

直接在 Herd 的 PHP 环境里配 Composer 镜像,不能只跑 composer config -g 就完事——Herd 自带的 PHP 是独立沙盒,它不读你系统用户家目录下的 ~/.composer/config.json,而是用自己封装的配置路径。
为什么 composer config -g 在 Herd 里无效?
Herd 启动的 CLI PHP 进程默认以当前 macOS 用户身份运行,但它会覆盖 COMPOSER_HOME 环境变量,指向 Herd 自己的私有配置目录(类似 /Users/xxx/Library/Application Support/Herd/composer),而不是你习惯的 ~/.composer。所以你在终端敲 composer config -g,实际写入的是系统全局路径;而 Herd 执行 composer install 时读的是它自己的路径,两者完全隔离。
- 验证方式:在 Herd 内置终端(不是你平时用的 iTerm)中执行
echo $COMPOSER_HOME,看输出是不是~/Library/Application Support/Herd/composer - 错误现象:
composer config -g repo.packagist返回正常 URL,但composer install -vvv日志里仍出现packagist.org或连接超时 - 根本原因不是镜像地址错,是配置没写进 Herd 实际加载的那个 config.json 文件里
怎么把镜像写进 Herd 真正读取的配置?
必须在 Herd 自带的终端里操作,且显式指定 -g 参数——因为 Herd 的 composer 命令已预设好环境变量,-g 会自动指向它自己的配置目录。
- 打开 Herd → 点击右上角「Terminal」按钮,启动内置终端
- 执行:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -g repo.packagist,输出必须是完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 如果提示
Permission denied,说明 Herd 目录权限异常,退出 Herd,终端执行:chmod -R u+rw ~/Library/Application\ Support/Herd/,再重试
换源后还是卡在 “Loading composer repositories” 怎么办?
Herd 的缓存和 lock 文件不会因换源自动刷新,旧元数据仍指向 packagist.org,必须手动清理。
- 先清缓存:
composer clear-cache(在 Herd 终端里执行) - 删掉项目里的
composer.lock和vendor/目录(Herd 终端或 Finder 都可) - 重新安装:
composer install -vvv,观察日志里GET请求的域名是否变成mirrors.aliyun.com - 如果仍走官方源,检查项目根目录
composer.json是否含"repositories"字段——只要存在,就会屏蔽全局镜像,此时应改用项目级命令:composer config repo.packagist composer https://mirrors.aliyun.com/composer/
最易被忽略的一点:Herd 每次重启可能重置 PHP 环境变量,但不会清空 Composer 配置;真正要命的是缓存和 lock 文件残留——它们会固化旧源地址,哪怕你配了十遍镜像也白搭。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











