必须立即配置镜像,因packagist.org在国内不可达,composer不fallback、不提示、不重试,首次运行create-project/init/install会卡在“loading composer repositories”;命令composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/需严格满足键名、type值、https及末尾斜杠等硬性条件,否则静默失效。

因为不配镜像,composer create-project、composer init、composer install 会卡在 “Loading composer repositories” —— 不是网络慢,是 packagist.org 在国内根本不可达,且 Composer 不 fallback、不提示、不重试,直接僵住。
为什么刚装完 Composer 就得立刻配镜像
新装 Composer 后首次运行任何依赖命令,都会尝试拉取 packages.json 元数据。这个请求默认指向 https://packagist.org/packages.json,而该域名在国内 DNS 解析慢、TLS 握手失败率高、首字节延迟常超 500ms。结果就是:命令挂起 2–5 分钟后报 timeout,或静默退出。
-
composer init卡住?不是交互没输完,是它正死连 packagist.org -
composer require monolog/monolog报Could not find package?大概率是元数据根本没拉下来,不是包不存在 - 你 ping 得通 mirrors.aliyun.com,但
composer install还是走国外源?说明镜像没写对,不是网络问题
composer config -g repo.packagist 命令为什么总“看起来成功,实际失效”
这条命令不报错,但漏掉任一硬性条件就静默失败——它不会提醒你,也不会覆盖旧配置,只是什么也不写。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 键名必须是
repo.packagist(单数,不是repos.packagist或repository.packagist) - 中间的
composer是type值,不是可选参数,漏掉就 fallback 回官方源 - URL 必须是 HTTPS + 末尾带斜杠:
https://mirrors.aliyun.com/composer/✅,少斜杠会拼出/composerpackages.json导致 404 - 验证是否真生效:运行
composer config -g repo.packagist,输出必须是完整 JSON 对象,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
项目级配置比全局更可靠,但结构极敏感
全局配置在宝塔、CI、Docker 中基本无效——因为它们用的是不同用户(如 www、runner),读不到你本地的 ~/.composer/config.json。项目级配置写进 composer.json 才真正可控,但格式稍错就失效。
- 执行前确认
composer.json里repositories字段是对象{},不是空数组[](否则composer config repo.packagist会报错) - 命令必须是
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加-g) - 改完必须删掉
vendor/和composer.lock,再跑composer install;update不行,它会沿用旧 lock 文件里的 dist URL - 如果已有
"packagist.org": false,得先手动删掉,否则镜像条目会被屏蔽
换源后还卡在 Resolving dependencies?和镜像无关
镜像只加速元数据下载和 ZIP 包拉取,不参与依赖解析。如果你发现 composer update 卡几十秒甚至几分钟,问题在本地约束写法或 PHP 环境。
-
"php": "^7.4 || ^8.0 || ^8.1 || ^8.2"这类宽泛版本约束会让 Composer 尝试数百种组合 -
require-dev里堆了phpunit、phpstan、psalm、friendsofphp/php-cs-fixer,版本冲突概率飙升 - 用了已废弃的
fxp/composer-asset-plugin(常见于老 Yii2 项目),它绕过镜像直连 Bower/NPM,而这俩源国内不可用 - 本地
~/.composer/cache损坏,可试composer clear-cache,但清完必须重装,不能跳过install
真正容易被忽略的点是:镜像配置不是“设一次就万事大吉”,而是每次新建项目、进 CI 容器、切用户时都得重新确认——它不继承、不传播、不自动 fallback,只认当前上下文里那个精确匹配的 repo.packagist 键和合法结构。










