Composer config -g repo.packagist 总不生效是因为必须同时满足三个硬性条件:键名必须为单数 repo.packagist、type 值必须显式写 composer、URL 必须 HTTPS 且末尾带 /,缺一即静默回退官方源。

composer config -g repo.packagist 命令为什么总不生效
这条命令不是“执行了就完事”,漏掉任意一个硬性参数,Composer 就会静默 fallback 到 https://packagist.org,且不报错、不提示。你看到的“配好了”,大概率是假象。
-
repo.packagist必须是单数形式,写成repos.packagist(多一个 s)或repositories.packagist.org,配置直接被忽略 - 第二个参数必须显式写
composer—— 它是 type 值,不是可选占位符,漏掉就无效 - URL 必须是 HTTPS 且末尾严格带一个
/:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(拼出/composerpackages.json导致 404) - Windows 下改完要重启终端;Linux/macOS 若用
sudo composer config -g,配置写进/root/.composer/config.json,普通用户运行时根本读不到
怎么验证镜像真的在用,而不是“看起来在用”
composer config -g repo.packagist 只告诉你“你写了什么”,不等于 Composer 正在用它。真正生效要看网络请求路径。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先清旧缓存:
composer clear-cache,否则 Composer 仍从本地缓存读packages.json签名和地址 - 跑一次真实操作:
composer require monolog/monolog -vvv,在输出里搜Downloading,确认 URL 是https://mirrors.aliyun.com/composer/packages.json - 或者看
composer diagnose输出中Repo packagist.org:这一行,它显示的是当前实际使用的源,比 config -g 更可靠 - 项目根目录有
composer.json且含"repositories"字段?运行composer config repo.packagist(不带-g)查是否被覆盖
PHP.ini 里这三个值不调,镜像再快也卡住
Composer 不读 PHP.ini,但它所有网络和内存行为都依赖 PHP 底层。镜像配对了,composer install 却卡在 Downloading 或报 Connection refused,八成是这三项没动。
-
memory_limit = -1(开发机)或512M(CI/部署),低于 256M 容易在依赖解析阶段 OOM,表现就是反复重试、像“卡住” -
max_execution_time = 300,默认 30 秒太短,首次同步全量元数据(尤其composer.lock陈旧时)很容易超时 -
curl.cainfo必须指向真实存在的 CA 证书路径,Linux 常为/etc/ssl/certs/ca-certificates.crt,Windows 常为C:\php\extras\ssl\cacert.pem;路径错或证书过期,HTTPS 镜像握手失败,降级 HTTP 或直接报SSL certificate problem
项目级配置比全局更稳,尤其在 CI/Docker/宝塔环境
你在终端用 root 配了 -g,但 CI 脚本以 jenkins 用户跑,Docker 构建用的是 www-data,宝塔后台任务走的是 www 用户——全局配置根本读不到。
- 进项目根目录后执行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不带-g),它会自动向composer.json的repositories字段追加一条,随代码提交,新人拉即用 -
repositories必须是数组,且首项必须是{"packagist.org": false},否则 Composer 2.2+ 会静默忽略,继续走硬编码的官方源 - Dockerfile 中建议分步:
COPY composer.json composer.lock ./→RUN composer install --no-dev --prefer-dist→ 再COPY其他代码,避免缓存失效 - GitHub Actions / GitLab CI 中,别信全局配置,直接在命令前临时加:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/ && composer install

















