必须在composer init前配置国内镜像,否则会卡在“loading composer repositories”;因init需实时拉取元数据,默认直连packagist.org,国内网络下易超时失败,且不报错仅静默等待。

必须在 composer init 前配好国内镜像,否则会卡在 “Loading composer repositories”,这不是网络慢,是它根本没走镜像,而是在死等 packagist.org 响应。
为什么 composer init 会卡住
初始化过程要实时拉取包元数据(比如可用的 monolog 版本列表),默认直连 https://packagist.org —— 国内 DNS 解析慢、TLS 握手常超时、首字节延迟高,且无 CDN。一旦没提前设镜像,composer init 就会卡几十秒甚至直接失败,composer.json 可能已生成但内容不全或源无效。
-
composer init不读项目级composer.json里的repositories,只认全局配置或环境变量 - 卡住时终端无报错,只有光标闪烁或长时间静默,容易误判为“命令没反应”
- 即使后续手动加了镜像,
composer init已失败的上下文也不会自动重试
composer config -g repo.packagist 必须写对三处
这条命令静默失败率极高,错一个就 fallback 到官方源,且不提示。验证方式只有一条:composer config -g repo.packagist 输出必须是完整 JSON:
- 键名只能是
repo.packagist(单数,不是repos.packagist或packagist.org) - 中间那个
composer是type值,必须显式写出,漏掉就等于没配 - URL 必须是
https://mirrors.aliyun.com/composer/(HTTPS + 末尾斜杠,少斜杠会拼出/composerpackages.json导致 404)
正确命令:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
宝塔、CI、Docker 环境里镜像不生效的真实原因
全局配置写在 ~/.composer/config.json,但它只对当前 shell 用户生效。而宝塔用 www 用户跑命令,GitHub Actions 用 runner 用户,Docker 容器里可能是 www-data —— 它们根本读不到你本地配的镜像。
- 先执行
whoami确认实际运行用户(宝塔里通常是www) - 用对应用户重配:
sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - CI 脚本中别依赖全局配置,改用临时参数更可靠:
composer install --repository-url=https://mirrors.aliyun.com/composer/
配完镜像后仍失败?清缓存和旧文件是硬性步骤
Composer 会优先复用本地缓存和 composer.lock 中记录的旧源地址,哪怕你刚配好镜像,它也可能继续往 packagist.org 发请求。
- 必须先运行:
composer clear-cache - 删掉项目下的
vendor/和composer.lock - 再执行:
composer install(不是update,后者会沿用旧 lock 文件里的 dist URL) - 验证是否真走镜像:
composer install -vvv 2>&1 | grep "GET\|Downloading",看日志里出现的是mirrors.aliyun.com还是packagist.org
很多人跳过清缓存和删 lock,结果反复折腾镜像配置,其实问题压根不在镜像本身。










