答案是报错关键词决定排查方向:DNS失败看“Could not resolve host”,连接拒绝查系统连通性,权限错误盯vendor/归属,SSL问题校准系统时间,依赖冲突删lock重装。

Composer install 报错,八成不是网络差、不是 PHP 坏,而是镜像没配对、缓存没清、权限认错人——先盯住报错关键词,再动手。
看报错里有没有 “Could not resolve host” 或 “Connection refused”
这是 DNS 或系统级连通失败,和 Composer 配置无关。
- 运行
ping packagist.org:如果返回unknown host,说明 DNS 解析失败,立刻换 DNS(比如设为8.8.8.8) - 运行
curl -I https://mirrors.aliyun.com/composer/packages.json:若超时或报同样错误,确认是否被企业代理/防火墙拦截 - 别改
composer.json里的repositories,它不解决 DNS 问题;优先执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/换源 - 换源后必须跑
composer clear-cache,否则旧失败记录还在,重试照样走原地址
报错含 “Permission denied” 且带 vendor/ 或 composer.lock 路径
90% 是目录归属被 sudo 污染过,不是缺权限。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 执行
ls -ld vendor/ composer.lock:如果属主是root,而你当前是普通用户,就会卡住 - 直接修复归属:
sudo chown -R $USER:$USER vendor/ composer.lock(Linux/macOS)或右键属性 → 安全 → 编辑权限(Windows) - 别乱
chmod 777,这治标不治本,还埋安全风险 - 检查
~/.composer/目录归属,CI 或宝塔环境常见 www 用户读不到 root 配的全局配置
报错是 “SSL certificate problem: certificate has expired”
基本锁定为系统时钟偏差过大,不是证书真过期。
- 运行
date(Linux/macOS)或systeminfo | find "Time Zone"(Windows),对比 time.is,偏差超 2 分钟必须校准 - Linux/macOS 执行:
sudo timedatectl set-ntp true && sudo systemctl restart systemd-timesyncd - Windows 执行(管理员 CMD):
w32tm /resync;若失败,先net start w32time,再指定可靠源:w32tm /config /syncfromflags:manual /manualpeerlist:"time.nist.gov pool.ntp.org" - 临时禁用 SSL 校验(仅调试):
composer config -g secure-http false,但切勿长期使用
报错 “Your requirements could not be resolved…” 或卡在 “Loading composer repositories”
本质是依赖冲突或元数据损坏,镜像加速不了这个。
- 先删干净:
rm -rf vendor composer.lock,再跑composer clear-cache - 检查
composer.json是否含"repositories"字段:哪怕只是"repositories": [],也会彻底屏蔽全局镜像;临时清掉用composer config --unset repositories - 用
composer why-not xxx定位具体冲突包,比如composer why-not phpunit/phpunit ^10.0 - 若项目用 PHP 8.2,但某依赖只声明支持
"php": "^7.4 || ^8.0",就得手动放宽或降级该依赖
最常被忽略的一点:换镜像后 composer.lock 里仍硬编码着旧 provider 地址,不删它,Composer 就永远在失败路径上打转。

















