必须配镜像,否则composer create-project swoft/swoft会卡在downloading或报connection timed out;原因是packagist.org在国内不可达,而config -g repo.packagist不生效主因是键名必须单数、type值composer不可省略、url末尾必须带/,三者缺一即静默回退官方源。

必须配镜像,否则 composer create-project swoft/swoft 会卡在 Downloading 或直接报 Connection timed out —— 这不是你网速问题,是 packagist.org 在国内根本连不上。
为什么 composer config -g repo.packagist 总是不生效?
这条命令漏掉任意一个细节就白配,而且不报错、静默失败:
-
repo.packagist键名不能写成repos.packagist或repository -
composer是type值,不是可选参数,必须显式写出 -
https://mirrors.aliyun.com/composer/必须带末尾斜杠/,少它就 fallback 到官方源 - 先运行
composer config -g --list看全局配置路径是否可写(Windows 下常因权限不足写入失败) - 已有项目里若
composer.json含"repositories"字段,它会覆盖全局配置,得先删或注释掉
验证是否成功:执行 composer config -g repo.packagist,正确输出应为 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。空、null 或报 Key 不存在,说明没写进去。
composer create-project swoft/swoft 还是卡住?用 --repository 强制走镜像
即使配了全局镜像,CI 构建、旧版 Composer 或 Docker 多阶段构建仍可能 fallback 到官方源。显式指定更保险:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer create-project swoft/swoft myapp --repository=https://mirrors.aliyun.com/composer/
注意三点:
-
--repository只对本次命令生效,不改配置,适合脚本或临时调试 - 它比全局配置优先级低,但比项目级
repositories更早介入下载流程 - 目标路径不能含中文、空格或大写字母(如
My Project),Windows 下易触发Could not delete错误
Docker 或 CI 环境下镜像配置常被忽略
很多人在 Dockerfile 里写了 RUN composer config -g repo.packagist ...,但构建阶段用的是 composer:latest 镜像,运行阶段切换到 php:8.2-fpm-alpine 后,这个配置就丢了——因为 composer 是独立容器,它的配置不会自动同步到 PHP 容器里。
解决办法分两种:
- 构建时统一用
php:8.2-cli镜像,全程只在一个容器里跑composer和php - 或者在运行阶段的容器启动脚本里重新执行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 更稳妥的做法是:在
docker-compose.yml的command或entrypoint中,把composer install放进启动流程,并带上--repository参数
换源后首次安装仍报 file could not be downloaded?别急着重装,先删干净 vendor/ 和 composer.lock 再重试。日志里没出现 mirrors.aliyun.com 域名,说明根本没走镜像——这一步最容易被跳过。










