卡在“Resolving dependencies”是DNS解析失败,需用ping和dig验证DNS,检查hosts、系统DNS设置及镜像URL末尾斜杠;卡在“Downloading”则查curl -v链路、镜像配置有效性及防火墙拦截。

Composer install 报网络错误,90% 不是 Composer 或 PHP 本身的问题,而是网络链路某一层被卡住——DNS、TLS、代理、镜像配置或防火墙策略出偏差,得按层验证,不能只改 timeout 或重试。
卡在 “Resolving dependencies” 是 DNS 解析失败
这一步根本没发 HTTP 请求,Composer 只在查 mirrors.aliyun.com 这类域名的 IP 地址。改 http.timeout 或配代理完全无效。
- 运行
ping mirrors.aliyun.com:返回unknown host就是 DNS 污染或失效 - 手动测 DNS:执行
dig mirrors.aliyun.com @8.8.8.8,看是否返回有效 A 记录 - 临时换系统 DNS:Linux/macOS 改
/etc/resolv.conf加nameserver 8.8.8.8;Windows 在网络适配器里手动设置 - 检查
/etc/hosts(或C:\Windows\System32\drivers\etc\hosts)是否硬绑了错误 IP
卡在 “Downloading” 或报 cURL error 7 / “Connection refused”
说明 TCP 连接失败,常见于企业防火墙拦截、代理不可用、IPv6 fallback 卡死,或镜像 URL 配错。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先确认镜像是否真生效:运行
composer config -g repo.packagist,输出必须是完整 JSON,例如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}—— 缺斜杠、少composer类型、写成repos.packagist都会静默失效 - 用
curl -v https://mirrors.aliyun.com/composer/packages.json看真实链路:
• 出现Connected to ... (2a03:2880::)后无响应 → IPv6 超时,加环境变量CURL_IPRESOLVE=4强制走 IPv4
• 卡在* TLS handshake→ OpenSSL 版本太旧或openssl.cafile路径错
• 返回HTTP/2 404或403→ URL 路径变更(如阿里云已切到/php/composer/) - 清缓存再试:
composer clear-cache,Windows 用户还得手动删%LOCALAPPDATA%\Composer\cache
报 “502 Bad Gateway” 或 “file could not be downloaded”
这不是你本地的问题,是镜像源后端挂了或被网关拦截。Packagist 官方源在国内基本不可达,别测它。
- 只测你正在用的镜像根路径:
curl -I https://mirrors.aliyun.com/composer/—— 必须返回HTTP/2 200才算通;502、503或卡住就得立刻换源 - 当前实测可用的 HTTPS 镜像(2026 年 9 月):
• 阿里云:https://mirrors.aliyun.com/composer/
• 华为云:https://mirrors.huaweicloud.com/repository/php/
• 腾讯云:https://mirrors.cloud.tencent.com/composer/ - 换源命令必须写全:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(中间composer是 type,不能省) - 验证是否 fallback 到旧源:加
-vvv运行composer install,第一行Downloading后的 URL 才是真实请求地址
Permission denied 写 vendor/ 或 composer.lock
不是缺权限,是目录归属被 sudo 污染过。Composer 报错里带路径的那一行就是线索。
- 盯终端输出中明确失败的路径,比如
file_put_contents(/path/to/vendor/autoload.php): Permission denied→ 问题就在vendor/ - 查归属:
ls -ld vendor/ composer.lock $(composer config --global cache-dir)—— 任意一行第一列显示root就确认错配 - 修复归属(别用
chmod 777):
•sudo chown -R $USER:$USER vendor/ composer.lock
• 全局缓存同理:sudo chown -R $USER:$USER $(composer config --global cache-dir) - 宝塔等环境注意:CLI 运行用户可能是
www,得用sudo -u www composer config -g ...配全局镜像
最常被忽略的是缓存残留和镜像 URL 的末尾斜杠——https://mirrors.aliyun.com/composer(缺斜杠)会导致拼出 /composerpackages.json 而 404,但 Composer 不报具体错误,只静默 fallback 或超时。验证必须用 -vvv 看真实请求地址,而不是只信 config 输出。

















