华为云镜像配置需同时满足三要素:正确url(https://repo.huaweicloud.com/repository/php/)、完整命令(composer config -g repo.packagist composer url)、且项目级repositories须为对象格式;漏一即仍走packagist.org。

华为云镜像不是换源就完事——配错地址、漏写 composer 类型、被项目级 repositories 覆盖,三者任一都会导致 composer install 依然卡在 packagist.org。
确认当前生效的华为云镜像地址是否正确
华为云当前唯一有效的镜像地址是 https://repo.huaweicloud.com/repository/php/(注意不是 mirrors.huaweicloud.com,也不是 /composer/ 结尾)。旧教程里常见的 https://mirrors.huaweicloud.com/repository/php/ 已返回 404;少一个末尾斜杠(如 /php)也会拼出错误路径,直接报 Could not fetch https:///packages.json。
验证方式只有一条命令:composer config -g repo.packagist
输出必须是完整 JSON 对象,形如:{"type": "composer", "url": "https://repo.huaweicloud.com/repository/php/"}
如果为空、为 null、或显示 https://packagist.org,说明没生效。
全局配置命令必须带齐三个要素
这条命令不能拆、不能省、大小写和空格都不能错:composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/
-
-g:必须,否则只改当前目录下的composer.json,换项目就失效 -
repo.packagist:键名严格为单数repo,写成repos.packagist(多一个s)完全无效,且不报错 -
composer:这是type值,不是注释,不是可选项;漏掉它,Composer 2.x 会 fallback 到默认源 - URL 必须以
https://开头,且末尾带/;HTTP 地址会被 Composer 2.0+ 拒绝
项目级配置比全局更可靠,但格式容易踩坑
进项目根目录后运行:composer config repo.packagist composer https://repo.huaweicloud.com/repository/php/
它会自动往 composer.json 的 repositories 字段里加一个 "packagist" key。
但前提是原 repositories 是对象格式(如 "repositories": {}),不是数组(如 "repositories": [])。数组格式会导致命令失败,且不会提示你该转格式。
安全写法是手动编辑 composer.json,确保结构如下:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
{
"repositories": {
"packagist": {
"type": "composer",
"url": "https://repo.huaweicloud.com/repository/php/"
}
}
}
注意:
"packagist" 是固定 key 名,不能改成 "huawei" 或其他名字,否则 Composer 不识别为默认源覆盖。
并发下载不启用,换再快的镜像也白搭
composer install 的下载阶段能并发,但默认只有 3 个线程——相当于把千兆宽带压成百兆用。必须显式开启:composer config -g parallel-downloads 8
这个设置只对 install 生效;update 仍需串行解析依赖图,本质无法并发。
设成 10 容易触发临时文件竞争,报 file_put_contents(/tmp/): failed to open stream;设为 8 是实测稳定值。
另外,如果 composer install 还慢,先跑:composer clear-cache
旧缓存里可能存着官方源的元数据,不清掉会继续尝试连接 packagist.org。
真正卡住的时候,90% 不是镜像慢,而是 composer update 卡在 Resolving dependencies —— 那和镜像无关,得查 composer.json 里的约束写法或本地 PHP 环境。










