composer self-update 不走 repo.packagist 镜像,必须用 --update-keys 指定国内镜像地址(如 https://mirrors.aliyun.com/composer/)或手动下载替换 composer.phar,否则仍直连 getcomposer.org。

直接结论:composer self-update 本身不走 repo.packagist 镜像,必须用 --update-keys + 国内镜像参数,或手动下载替换,否则换源对 self-update 完全无效。
为什么 composer config -g repo.packagist 对 self-update 没用?
因为 self-update 不从 Packagist 下载,而是直连 getcomposer.org 获取 composer.phar 和 GPG 签名密钥。全局镜像配置只影响依赖包下载(install/update),对自身更新路径无任何作用。
常见误操作是配完阿里云镜像就跑 composer self-update,结果依然卡在 TLS 握手或 100% 下载不动——这不是镜像没生效,是根本没走镜像。
composer self-update --update-keys 必须带镜像参数才加速
Composer 2.2+ 支持通过 --update-keys 指定密钥服务器地址,而密钥和二进制文件都可从国内镜像站获取。正确命令是:
composer self-update --update-keys https://mirrors.aliyun.com/composer/
注意三点:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
--update-keys参数不可省略,否则仍走官方密钥服务器 - URL 必须是镜像站根地址,且末尾带
/(https://mirrors.aliyun.com/composer/✅,少斜杠会 404) - 该命令会同时拉取新版本
composer.phar和对应 GPG 公钥,跳过境外节点
手动替换 composer.phar 是最稳方案
当网络极不稳定、GPG 验证反复失败,或需精确控制版本时,手动下载更可靠:
- 访问
https://mirrors.aliyun.com/composer/,下载最新composer.phar - 确认当前安装位置:
which composer(Linux/macOS)或where composer(Windows) - 覆盖原文件(注意权限):
sudo mv composer.phar /usr/local/bin/composer(Linux/macOS) - 验证:
composer --version,输出应为新版本号(如Composer version 2.9.6)
手动方式绕过所有 TLS/GPG 环节,也避免了 COMPOSER_DISABLE_TLS=true 这类临时开关带来的安全风险。
CI/宝塔等环境里 self-update 失败的根源
你在终端里执行成功的 composer self-update --update-keys,在宝塔面板或 GitHub Actions 里可能照样失败——因为它们以 www 或 runner 用户运行,读不到你个人用户的全局配置,也不具备你的网络代理或证书信任链。
解决方案只有两个:
- 在 CI 脚本或宝塔计划任务中,显式指定用户并切换上下文:
sudo -u www composer self-update --update-keys https://mirrors.aliyun.com/composer/ - 或直接在构建步骤开头下载替换:
curl -sS https://mirrors.aliyun.com/composer/composer.phar -o /usr/local/bin/composer && chmod +x /usr/local/bin/composer
别指望“一次配置,处处生效”。self-update 的执行用户、PATH、证书目录、DNS 解析路径,每个环节都可能断在不同地方。

















