答案是dns解析失败、代理拦截或防火墙阻断导致请求未发出,需先用ping和curl验证连通性,再严格配置阿里云镜像(键名repo.packagist、type值composer、url末尾带/)、清缓存,并排除ca证书过期与系统时间偏差问题。

局域网里 composer install 报 “Connection refused” 怎么办
不是 Composer 本身坏了,是请求压根没发出去——局域网常见 DNS 不通、代理拦截或防火墙策略阻断。先别动 composer.json,直接验证底层连通性。
- 运行
ping mirrors.aliyun.com:如果返回unknown host,说明 DNS 解析失败,需手动改/etc/resolv.conf(Linux/macOS)或网络适配器设置(Windows),加一行nameserver 8.8.8.8 - 运行
curl -v https://mirrors.aliyun.com/composer/:卡在* Connected to是 TCP 层不通;卡在* TLS handshake是证书或时间问题;成功返回 HTTP 200 才算通 - 企业内网若强制走中间人代理(如深信服、启明星辰),
curl会静默失败。临时绕过:执行composer config -g secure-http false和composer config -g cafile /dev/null(仅调试用,勿留生产)
全局镜像配置写对了但没生效?检查三个硬条件
命令 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 看似成功,但输出为空、为 null 或仍是 https://packagist.org,说明根本没写进去。必须同时满足:
- 键名只能是
repo.packagist(不能是repos.packagist、repositories.packagist或packagist.org) - type 值必须显式传入
composer(漏掉这个,Composer 2.x 直接忽略整条配置) - URL 必须是 HTTPS 且末尾带
/(https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌——拼路径时变成/composerpackages.json,404)
验证是否真写进去了:composer config -g repo.packagist 输出必须是完整 JSON 对象,例如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
宝塔、Docker 或 CI 中全局配置失效的真正原因
只要项目根目录 composer.json 里存在 "repositories" 字段(哪怕只是空数组 "repositories": []),全局配置就彻底失效——不是优先级低,是被跳过。更麻烦的是权限错位:
- 宝塔默认用
www用户执行命令,你在终端用root配的~/.composer/config.json,www根本读不到 - GitHub Actions 或 Docker 容器里可能根本没有
~/.composer目录,composer config -g实际写到了临时路径,下次构建就丢 - 推荐做法:进项目根目录,运行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加-g)。它会自动合并到composer.json的repositories字段中,key 固定为"packagist"
SSL 验证失败报 SSL3_GET_SERVER_CERTIFICATE 怎么修
镜像源地址没错,curl 能通,但 Composer 仍报 SSL 错误,大概率是 PHP 的 CA 证书文件过期或损坏。2026 年仍在用 2021 年停更的 curl-ca-bundle.crt 很常见。
- 查当前证书路径:
php -r 'print_r(openssl_get_cert_locations());',重点关注default_cert_file和ini_cafile对应的路径(如/etc/pki/tls/cert.pem) - 下载最新证书:
wget https://curl.se/ca/cacert.pem -O /etc/pki/tls/cert.pem(路径按上一步输出调整) - 同步更新
php.ini中的openssl.cafile和curl.cainfo,都指向同一份新证书文件 - 别忽略系统时间:运行
date,若偏差超过 5 分钟,SSL 证书会被判定为“未生效”或“已过期”
CA 证书和系统时间这两个点,比换源、清缓存更容易被跳过,但一旦出问题,所有 HTTPS 请求都会静默失败。










