composer export卡住本质是校验锁文件时回退访问境外源,需验证镜像配置是否生效、刷新composer.lock并禁用xdebug。

Composer export 本身不下载包,只生成锁文件快照,所以“加速”不是指下载变快,而是避免它卡在依赖解析或元数据加载阶段——这通常是因为全局/项目源配置失效,导致它仍试图访问 packagist.org 或触发 GitHub API 限流。
为什么 composer export 会卡住
执行 composer export --format=zip 或 composer export --format=dist 时,如果卡在 Loading composer repositories 或反复重试 https://api.github.com/,说明 Composer 正在尝试拉取元数据来校验包版本一致性。这不是 export 动作本身慢,而是底层 install / update 流程被拖慢了。
-
export命令隐式依赖当前composer.lock的完整性;若 lock 文件里含已下线包、平台约束冲突、或 dist URL 指向不可达的 GitHub 地址,它会回退到在线解析 - 未生效的镜像配置(如
repo.packagist键名写错、URL 少斜杠)会让它默认连packagist.org,而该域名在国内 DNS 解析慢、TLS 握手常超时 - CI 环境中若复用旧
composer.lock,且其中dist.url还是https://codeload.github.com/...,export会尝试验证该 URL 可达性,哪怕最终不用下载
确保 repo.packagist 配置真正生效
这是最常被跳过的一步。运行以下命令验证:
composer config -g repo.packagist
输出必须是完整 JSON 对象,例如:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
- 如果输出为空、
null、或仍是https://packagist.org,说明配置根本没写进去 - 常见错误:漏掉
-g、键名写成repos.packagist、第二参数没写composer、URL 末尾缺/ - 正确命令示例:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 宝塔或 CI 中需确认执行用户(如
www),否则配置写进/root/.composer/config.json,但 PHP 进程读的是/home/www/.composer/config.json
导出前强制刷新 lock 文件
export 不会自动更新 lock,但它依赖 lock 中的 dist.url 和 source.type 字段做校验。若 lock 里还存着原始 GitHub 地址,即使镜像已配好,也会触发无效网络请求。
- 删掉
composer.lock和vendor/目录 - 运行
composer update --lock --no-install:仅重生成 lock,不下载包,且强制使用当前镜像源生成新的dist.url - 再执行
composer export --format=zip,此时所有元数据都来自镜像,不再触碰 GitHub - 如需保留 dev 依赖信息,加
--with-dependencies,但注意这会增大导出体积
CI 环境中绕过解析阶段
在 GitHub Actions、GitLab CI 等场景,export 常因缓存了旧 lock 或未清理全局配置而失效。
- 显式清除缓存:
composer clear-cache,尤其当之前试过多个镜像但没清理时 - 用临时参数绕过所有配置:
composer export --format=zip --repository-url=https://mirrors.aliyun.com/composer/ - 禁用 xdebug(
php -d xdebug.mode=off $(which composer) export ...),避免依赖图解析慢 5–10 倍 - 设置内存上限:
COMPOSER_MEMORY_LIMIT=-1,防止Resolving dependencies阶段因 memory_limit 不足而反复失败
真正卡点不在 export 命令本身,而在它背后对 lock 文件一致性的校验逻辑——只要 composer.lock 里的 dist.url 还指向境外地址,或镜像配置没写对用户家目录,就一定会拖慢整个流程。










