必须在composer init前配置国内镜像源,否则会卡在“Loading composer repositories”;需执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,确保键名、type值、URL末尾斜杠三者正确,并验证输出为完整JSON。

项目初始化前不配镜像,composer init 会卡在“Loading composer repositories”——不是你网慢,是它正在死连 packagist.org。
composer init 之前必须先设镜像
很多人先跑 composer init 再配镜像,结果初始化过程超时失败或生成的 composer.json 已含无效源。因为 init 阶段就要读元数据,没镜像就直连国外源。
- 全局用户(推荐):运行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,确保repo.packagist键名、composer类型、URL 末尾带/三者齐全 - 验证是否生效:
composer config -g repo.packagist输出应为完整 JSON,形如{"type":"composer","url":"https://mirrors.aliyun.com/composer/"} - 宝塔或 CI 环境要注意执行用户:用
whoami确认当前命令运行身份,config -g只对当前用户生效;若 Jenkins 用jenkins用户跑,就得用该用户执行配置 - PHP 环境要过关:确保
php -m | grep -E 'openssl|zlib'有输出,否则连 HTTPS 都建不起来,镜像再快也白搭
项目级镜像配置必须写进 composer.json 的 repositories 数组首位
全局镜像被项目里 repositories 覆盖后就彻底失效——不是配置错了,是优先级规则使然。项目级配置只在当前目录起作用,但格式极敏感。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
repositories必须是数组,不能是对象;镜像源对象必须放在第一位 - 必须显式禁用官方源:
{"packagist.org": false}是独立项,和镜像对象并列,不能嵌套在镜像对象里 - 错误示例:
"repositories": {"type":"composer",...}(应为数组)、"repositories": [{"packagist.org": false}](缺镜像源)、"repositories": [{"type":"composer","url":"..."},{"packagist.org": false}](顺序反了,部分版本会 fallback) - 写完立刻删掉
vendor/和composer.lock,再跑composer install——update不行,它会沿用旧 lock 文件里的 dist URL
composer init 后加依赖时仍连不上镜像?检查 type 和 URL 格式
composer init 成功不代表后续操作就一定走镜像。很多人在交互式添加包时选了版本,结果 require 过程又卡住,本质还是源没接管。
- 运行
composer require monolog/monolog -vvv 2>&1 | grep "GET\|Downloading",看实际请求域名是不是镜像地址,而不是只信config -g输出 - 如果看到
packagist.org或repo.packagist.org,说明镜像没生效:大概率是repo.packagist键名写成repos.packagist(多 s),或type值漏写、写错 - 某些 IDE(如 PHPStorm)会缓存 Composer 配置,改完全局设置后需重启 IDE 才能识别新源
- CI 脚本中别依赖
config -g,改用临时参数:composer install --repository-url=https://mirrors.aliyun.com/composer/
最常被忽略的一点:改完 composer.json 里的 repositories,不删 composer.lock 就直接 install,Composer 会照着 lock 文件里旧的 dist URL 下载——它根本不会重新查镜像源,连报错都不会有,只会 404 或超时。

















