必须配国内镜像且配置精准:键名repo.packagist、type值composer、url为https://mirrors.aliyun.com/composer/(含末尾斜杠),否则静默回退官方源;线上需按实际运行用户(如www)配置或改用项目级repositories字段写入composer.json并提交。

composer install 在线上部署时卡在 Loading composer repositories 或 Downloading,不是服务器带宽小,是默认连 https://packagist.org 导致 DNS 解析慢、TLS 握手失败、首字节延迟高——必须配国内镜像,且配置必须对、全、准,否则静默回退到官方源。
全局镜像配置为什么在线上常失效
线上环境(如宝塔、Docker、GitHub Actions)通常以非登录用户运行命令,比如 www、runner 或容器内无主用户,而 composer config -g 写的是当前 shell 用户的 ~/.composer/config.json,其他用户根本读不到。
- CI/CD 中用
sudo -u www composer install,但-g配的是root或github-actions用户,配置不生效 - 宝塔面板执行脚本时用的是
www用户,而你本地root配的全局镜像对它无效 - Docker 构建中,
composer运行在干净镜像里,~/.composer根本不存在,-g配置毫无意义 - 验证方式错误:只在本地跑
composer config -g repo.packagist,没在线上目标用户下执行,结果误判“已生效”
项目级配置才是线上部署的可靠方案
把镜像地址写进 composer.json 的 repositories 字段,随代码一起部署,所有环境拉下来就生效,无需依赖用户权限或全局状态。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 进项目根目录,运行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(注意不加-g) - 该命令会自动向
composer.json的repositories中插入"packagist"条目,不会清空已有私有源(前提是原repositories是对象{}或数组[]) - 如果项目已有自定义源,别手动编辑
composer.json;若repositories是数组,命令会追加;若是对象,会转为标准数组格式再插入 - 改完后务必提交
composer.json到 Git,否则新机器拉代码后依然走默认源 - 上线前建议运行一次
composer update --lock,确保composer.lock记录的是镜像站地址,而非packagist.org
镜像 URL 必须严格满足三要素,否则 404 或静默 fallback
哪怕只错一个字符,Composer 就会放弃镜像,默默切回 https://packagist.org,日志里还看不出异常。
- 键名只能是
repo.packagist(单数repo,不是repos.packagist或packagist.org) -
type值必须显式传入composer,漏掉它,Composer 2.2+ 直接 fallback - URL 必须以
https://开头,且末尾带斜杠:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(少斜杠会导致请求路径拼成/composerpackages.json,返回 404) - 验证是否真生效:线上部署机上,用实际运行用户(如
www)执行composer install -vvv | grep "mirrors.aliyun.com",看到域名才说明走对了
部署后仍卡在 Resolving dependencies 怎么办
这不是镜像问题,镜像只加速下载(Downloading、Fetching package),不解决依赖解析慢。线上卡在这一步,大概率是旧 composer.lock 与当前镜像元数据不一致,或版本约束太宽导致 SAT 求解器反复回溯。
- 删掉
composer.lock和vendor/后重装,避免旧锁文件残留 packagist.org 的哈希或路径 - 避免在生产环境跑
composer update;优先用composer install恢复锁文件 - 如果必须更新,加
-vvv看卡在哪一包,再手动 curl 测试该包元数据是否存在:curl -I https://mirrors.aliyun.com/composer/p2/monolog/monolog.json - 某些企业网络会拦截 HTTPS 镜像站,可临时关证书校验:
composer install -n(仅限可信内网)
composer.json、没验证实际运行用户下的效果。镜像本身不难配,难的是让每一台机器、每一个用户、每一条 CI 流水线都真正走过去。










