CentOS 上 Composer 无法连接网络的排查与修复
一、快速定位问题
- 在项目目录或任意路径执行:composer diagnose,优先处理标为 ERROR 的项(如 HTTPS 连通性、代理配置、权限、PHP 扩展等)。
- 用命令行验证网络与解析:
- ping github.com
- curl -I https://packagist.org
若这些也超时,说明是系统网络或 DNS 问题,需要先修复系统层连通性。
- 若诊断或安装时出现 Git 相关报错(如 Failed to clone),先确认 git --version 可用,以及 SSH/HTTPS 访问代码平台是否正常。
二、常见原因与对应修复
- 更换国内镜像源(解决国外源访问慢/超时)
- 全局设置:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- 备选:composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
- 调整超时阈值(慢速网络/大项目)
- 建议:composer config -g process-timeout 1800,composer config -g http-timeout 600
- 配置或清除代理(公司网络常见)
- 设置:composer config -g http-proxy http://proxy.example.com:8080
- 清除:composer config -g --unset http-proxy
- 修复 DNS 与系统网络(CentOS)
- 编辑 /etc/resolv.conf,加入:nameserver 8.8.8.8、nameserver 114.114.114.114
- 重启网络:systemctl restart NetworkManager 或 nmcli c reload
- 处理 IPv6 路由不佳导致的超时
- 临时强制 IPv4:CURL_IPRESOLVE=4 composer install
- 系统级优化(可选):编辑 /etc/gai.conf,取消注释并添加:precedence ::ffff:0:0/96 100
- 处理 GitHub API 速率限制(出现 Token 提示时)
- 生成 Personal Access Token(勾选 repo 权限),按提示粘贴保存,之后请求走 Token 认证。
三、Git 克隆失败的处理
- 安装 Git:sudo yum install -y git,确认 git --version 有输出。
- 使用 SSH 拉取时,确保 SSH 密钥已生成并添加公钥到 GitHub/GitLab;测试:ssh -T git@github.com。
- 若使用 HTTPS 拉取,必要时为 Git 配置代理:git config --global http.proxy http://proxy.example.com:port;不需要时清除:git config --global --unset http.proxy。
- 网络/DNS 异常时,可临时通过 hosts 解析仓库域名,或先修复 DNS 再重试。
四、一键排查与修复命令清单
- 诊断环境:composer diagnose
- 清缓存:composer clear-cache
- 自更新 Composer:composer self-update
- 设置镜像源:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- 设置超时:composer config -g process-timeout 1800,composer config -g http-timeout 600
- 强制 IPv4 运行:CURL_IPRESOLVE=4 composer install
- 修复 DNS(CentOS):echo -e “nameserver 8.8.8.8\nnameserver 114.114.114.114” | sudo tee /etc/resolv.conf && sudo systemctl restart NetworkManager