卡在Resolving dependencies是DNS解析问题,非timeout可解决;应测DNS、换DNS服务器、检查hosts或用热点验证;卡在Downloading才需调http.timeout至600秒。

Composer卡在Resolving dependencies是DNS问题,不是timeout能解决的
这一步根本没发HTTP请求,Composer只在查mirrors.aliyun.com或packagist.org的IP地址。改http.timeout完全无效,纯属白等。
常见现象包括:Could not resolve host、unknown host、ping packagist.org失败。
- 手动测DNS:运行
dig mirrors.aliyun.com @114.114.114.114,看是否返回正确IP - 临时换系统DNS:Linux/macOS改
/etc/resolv.conf加nameserver 8.8.8.8;Windows在网络适配器里手动设 - 检查
/etc/hosts(或C:\Windows\System32\drivers\etc\hosts)是否误写了错误的packagist.org映射 - 用手机热点试一次——很多企业网会屏蔽
packagist.org和github.com,但热点通常通
卡在Downloading才该调http.timeout,建议设为600
http.timeout控制每次请求从DNS查询、TLS握手到响应头返回的总时间,默认仅60秒,对国内镜像或大包明显不够。
- 全局设置(推荐):
composer config -g http.timeout 600 - 项目级更稳妥(CI友好):在
composer.json的"config"段加"http.timeout": 600 - 临时调试优先用环境变量:
COMPOSER_HTTP_TIMEOUT=600 composer install,避免污染配置 -
process-timeout在这里完全不生效;PHP CLI的default_socket_timeout也会干扰,可绕过:php -d default_socket_timeout=600 $(which composer) install
换阿里云镜像源必须写对命令,漏一个字符就静默失败
命令必须同时满足三项硬性要求,否则不报错、不提示、也不生效:
- 键名是
repo.packagist(注意是repo单数,不是repos) -
composer是type值,不能省略(写成composer config -g repo.packagist https://就fallback到官方源) - URL必须是HTTPS,且末尾带斜杠:
https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌
正确命令(可直接复制):composer config -g repo.packagist composer 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
验证是否真正生效:composer config -g repo.packagist应输出{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。如果返回空、null或仍是"https://packagist.org",说明配置失败。
vendor/autoload.php生成不全但无报错,容易被忽略
Composer在下载部分provider-*.json成功、部分失败后,会尝试回滚并静默跳过缺失的包,最终仍生成vendor/autoload.php,但里面只包含已成功解析的类映射。结果就是运行时报Class not found,而composer install看似“成功”。
典型线索:
-
vendor/autoload.php存在但只有几行注释或require __DIR__ . '/composer/autoload_real.php'; -
vendor/composer/installed.json为空或key数量明显少于预期(比如Laravel项目应有30+条记录,实际只有5条) -
composer show报Could not find package laravel/framework in a package repository
此时删掉vendor/和composer.lock重装只是治标;更稳的做法是先设高超时 + 强制dist:composer install --prefer-dist --no-scripts --no-plugins --http-timeout=600。

















