生产环境 composer install 慢的根源是直连 packagist.org 导致 DNS/TLS/TCP 问题,必须配置 HTTPS 镜像(如腾讯云或阿里云新版)并强制使用 --no-interaction --prefer-dist 才能压至 30 秒内。

生产环境部署慢,八成卡在 composer install ——不是代码或服务器性能问题,是默认直连 packagist.org 导致 DNS 解析慢、TLS 握手失败、TCP 超时反复重试。必须配对可用 HTTPS 镜像,并加 --no-interaction --prefer-dist 才能压到 30 秒内完成。
为什么腾讯云或阿里云镜像在生产环境更稳?
不是所有“国内镜像”都能用:有些已停服(如旧版阿里云 https://mirrors.aliyun.com/composer/ 在部分区域不稳定),有些仅支持 HTTP(Composer 2.2+ 默认禁用);而腾讯云 https://mirrors.cloud.tencent.com/composer/ 和阿里云新版 https://mirrors.aliyun.com/composer/ 具备三个硬性条件:HTTPS 协议、全量同步、无认证要求,适配 Composer 2.9.6 及所有主流版本。
- 腾讯云镜像目前延迟最低,CI/CD 中失败率接近 0,适合全局配置
- 阿里云镜像同步频率高,但部分地区偶发 503,建议搭配
-vvv日志验证请求 URL - 华为云镜像可用,但元数据更新略滞后,不推荐用于高频发布项目
- 已下线的
https://packagist.phpcomposer.com会直接 404,千万别填
项目级镜像配置比全局配置更可靠
全局配置(composer config -g repo.packagist composer ...)在宝塔、GitHub Actions、Docker 构建中大概率不生效——因为执行用户(如 www 或 runner)根本读不到你本地 root 的 ~/.composer/config.json。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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.cloud.tencent.com/composer/(注意不加-g) - 这条命令会安全写入
composer.json的repositories字段,不覆盖已有私有源 - 如果
composer.json原本是"repositories": {},它会自动转为数组并追加;如果是"repositories": [],则直接 push 新项 - 改完必须删掉
vendor/和composer.lock,再跑composer install,否则 hash 校验可能失败
部署脚本里漏掉这两个参数,速度直接翻倍
--no-interaction 和 --prefer-dist 不是可选项,是生产环境强制要求:
-
--no-interaction:CI/CD 没有 TTY 终端,不加会导致命令卡在交互提示(比如问你是否信任证书) -
--prefer-dist:强制走压缩包下载,避免回退到耗时更高的--prefer-source(尤其当镜像未缓存某包的 dist 版本时) - 完整命令应为:
composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader - 别写
composer update上生产——它会重新解析依赖树,触发大量网络请求,只应在开发环境运行
镜像配置后仍慢?先看 -vvv 日志里实际请求的是哪个 URL
镜像没生效最常见原因是命令写错:键名写成 repos.packagist(多一个 s)、漏掉 composer 类型值、URL 少末尾斜杠 /——三者任一出错,Composer 2.x 都会静默 fallback 到官方源,不报错也不提示。
- 验证是否生效:
composer config repo.packagist应返回完整 JSON,如{"type": "composer", "url": "https://mirrors.cloud.tencent.com/composer/"} - 排查真实请求源:
composer install -vvv 2>&1 | grep "Fetching",看日志里出现的是镜像域名还是packagist.org - 临时验证某个镜像是否可用:
composer install --repository-url=https://mirrors.aliyun.com/composer/,该参数优先级最高,覆盖所有其他配置 - 私有包(如 GitLab VCS 源)不受镜像影响,无需额外处理
镜像只是第一步,真正卡点常藏在 --prefer-dist 是否生效、composer.lock 是否与镜像元数据一致、以及构建用户是否真读到了配置——这些细节不盯住,换再快的镜像也白搭。

















