Composer install在局域网卡住或失败,90%因镜像未生效、私有源ZIP路径不可达或缓存污染:必须用composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(带type、HTTPS、末尾/),输出完整JSON;删vendor、composer.lock及缓存;确保Nginx正确暴露dist路径并返回application/zip MIME。

composer install 在局域网里卡住或失败,根本不是网络慢
它卡在 Loading composer repositories 或报 Could not find package xxx,90% 是镜像配置没生效、私有源 ZIP 路径不可达,或缓存污染。局域网内没有外网访问能力时,composer install 会照常读 composer.lock,但所有包的 dist.url 仍指向 GitHub、Packagist 等原始地址——这些地址根本打不开。
-
composer config -g repo.packagist必须带composer类型参数,漏掉就等于没配:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 末尾必须有
/,https://mirrors.aliyun.com/composer(少斜杠)会导致 404,Nginx 返回空响应或 text/plain - 验证是否真生效:运行
composer config -g repo.packagist,输出必须是完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - CI/CD 或 Docker 容器中,
~/.composer/config.json往往不可读(权限或路径错),得用环境变量COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/替代
私有镜像服务(Satis/Nexus)必须暴露 dist/ 路径且返回正确 MIME
即使全局镜像配对了,composer install 仍会按 composer.lock 里的 dist.url 去请求 ZIP 包。局域网私有源若只暴露了 packages.json,没把 dist/xxx.zip 挂到 HTTP 可访问路径下,就会 404 或被 Composer 拒绝(因返回 text/plain 而非 application/zip)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Nginx 配置需显式支持 ZIP 文件:确保
location /dist/指向实际 ZIP 存放目录,并添加add_header Content-Type application/zip; - Nexus 用户要确认 Composer group 的
Storage → Blob store已挂载 dist 目录,且Routing → Allow anonymous access已开启 - 用
curl -I http://your-mirror/dist/some-package.zip验证:HTTP 状态码必须是200,Content-Type必须是application/zip - 别依赖
"packagist.org": false单独生效——它只禁元数据源,不改 dist 下载行为;必须让所有dist.url实际可 GET 到
执行 composer install 前必须清理三样东西
局域网环境下,一次失败的 composer install 会把错误元数据和部分 ZIP 缓存进本地,后续再配镜像也白搭。不清理,install 会继续尝试从旧缓存或失效 URL 下载。
- 删掉整个
vendor/目录(不能只删部分) - 删掉
composer.lock(仅限首次接入私有源;已有 lock 且想保留版本时,先用composer update --lock修正 PHP 版本兼容性) - 清缓存:
composer clear-cache(不是composer cache-clear,后者是旧版命令)
CI/CD 和 Docker 中 composer install 行为容易被忽略的关键点
GitLab Runner、Jenkins Agent 或自定义构建镜像里,composer install 往往以非交互用户(如 www-data 或 gitlab-runner)身份运行,它默认读不到你本地 ~/.composer/config.json,全局配置形同虚设。
- 在 CI 脚本开头显式设置镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 加
--no-cache参数避免读取残留缓存:composer install --no-cache --no-dev -o - Dockerfile 中不要用
COPY ~/.composer /root/.composer(路径/权限错),而应在构建阶段运行composer config命令 - 宝塔面板用户注意:PHP 运行用户(如
www)对/root/.composer无读取权限,必须用composer config --global并确保该用户 home 目录下有可写.composer
composer install 的难点不在命令本身,而在 dist 资源是否能被 Composer 拿到——这取决于你的 Nginx/Nexus 配置是否精确暴露 ZIP 路径、MIME 是否正确、以及缓存是否彻底清理干净。任何一环出问题,都会表现为“明明配了镜像却还连 GitHub”。

















