Composer代理配置必须同时设置proxy和ssl-proxy,因所有请求均为HTTPS,仅配proxy无效;正确命令为:composer config -g repo.packagist.org.proxy http://127.0.0.1:7890 和 composer config -g repo.packagist.org.ssl-proxy http://127.0.0.1:7890。

代理配置必须同时设 proxy 和 ssl-proxy
Composer 100% 走 HTTPS 请求 packagist.org,只配 repo.packagist.org.proxy 不生效——它只用于 HTTP 流量,而实际所有元数据请求(如 packages.json)都走 HTTPS。漏掉 ssl-proxy 就等于没配代理。
正确命令是这两行缺一不可:
composer config -g repo.packagist.org.proxy http://127.0.0.1:7890 composer config -g repo.packagist.org.ssl-proxy http://127.0.0.1:7890
- 代理地址必须带协议(
http://),否则报Invalid URI - SOCKS5 需 Composer ≥ 2.2,且写法是
socks5://127.0.0.1:7891,旧版直接忽略 - CI 环境下用
sudo composer config -g会写进 root 用户配置,普通用户进程读不到
缓存命中率低的真正原因:cache-dir 挂载错位置
很多人以为“开了缓存”就完事了,但 cache-dir 指向 NFS、Docker volume 或慢速盘,等同于没缓存——解压一个 zip 包的时间可能比重新下载还长。
必须确认两件事:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer config -g cache-dir输出的是本地 SSD 路径,例如/tmp/composer-cache,不是~/.composer/cache(后者在 CI 容器里生命周期一结束就丢) - CI 中缓存路径要精确到
~/.composer/cache/files,因为只有这个子目录存实际 zip 包;只缓存顶层~/.composer/cache或只缓存vendor/,都会导致重复下载 - 多 PHP 版本共用一个缓存目录会污染,推荐用
COMPOSER_CACHE_DIR=$HOME/.composer-cache-$PHP_VERSION
镜像源和代理不能共存,否则缓存失效
一旦你配了 repo.packagist 镜像(比如阿里云),再配 proxy,Composer 会优先走镜像 URL,但代理配置仍会干扰 SSL 握手或重定向逻辑,最终表现为缓存不复用、反复拉取同一包。
判断是否混用很简单:
- 执行
composer config -g repo.packagist,输出是完整 JSON(如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"})→ 说明走镜像,此时应删掉proxy和ssl-proxy - 执行
composer install -vvv,日志中出现GET https://mirrors.aliyun.com/composer/p2/...→ 镜像生效;若出现GET https://packagist.org/packages.json→ 还在直连,镜像没生效,别急着加代理 - 公司内网已有同步镜像站(如腾讯云、阿里云内网源),配代理反而引入单点故障
cache-files-ttl 和 cache-files-maxsize 必须调大
默认 cache-files-ttl=6个月 看似够长,但 CI 构建频繁、PHP 版本切换多时,小 TTL 会导致缓存过早被 GC 清理;cache-files-maxsize=300MiB 对 Laravel 项目根本不够——一个 symfony/console dist 包就 2–3 MiB,几十个依赖轻松破 500MiB。
建议显式设置:
{"config": {
"cache-files-ttl": 2592000,
"cache-files-maxsize": "1G"
}}
-
cache-files-ttl设为 30 天(2592000秒)比默认更可控,避免跨月构建时缓存意外失效 -
cache-files-maxsize至少设到500MiB,Laravel + Vue + testing 工具链常见缓存体积在 600–900MiB - 这两个值必须写进全局配置(
composer config -g),项目级composer.json里的 config 不影响缓存行为

















