应根据PHP版本、是否需要异步及依赖兼容性选择Guzzle版本:PHP 7.1用6.5,7.2+推荐^7.5,7.4+可选^8.0;需先验证php/composer版本并配置国内镜像源。

直接运行 composer require guzzlehttp/guzzle 就能装上最新稳定版,但实际集成时得看 PHP 版本、是否需要异步、要不要精简依赖——不是所有场景都该无脑装最新版。
确认 PHP 版本和 Composer 环境是否就绪
Guzzle 7.x 要求 PHP ≥ 7.2,Guzzle 8.x 起最低需 PHP 7.4;若项目还跑在 PHP 7.1 上,只能用 Guzzle 6.5(LTS 版本,维护到 2023 年底,现已停止支持,但旧系统仍常见)。
- 运行
php -v和composer --version先核对版本 - 若提示
Command not found: composer,需先安装 Composer(推荐用官方 install script:php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"→ 再php composer-setup.php) - 国内用户建议配镜像源,避免超时:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
用 require 命令安装并指定版本(别只敲默认命令)
不加版本号会默认拉取最新 major 版(目前是 Guzzle 8.x),但很多老项目依赖 guzzlehttp/psr7 v1 或 v2,而 Guzzle 8 强制要求 psr7 v2,可能引发冲突。
- 稳妥起见,明确指定版本:
composer require guzzlehttp/guzzle:^7.5(兼容 PHP 7.2+,生态成熟) - 如果确定要用异步流式请求或中间件链,再考虑 Guzzle 8:
composer require guzzlehttp/guzzle:^8.0 - 仅需基础同步 GET/POST?可选轻量替代方案,比如
php-http/curl-client+psr/http-client,体积更小
验证安装成功并快速写个请求试试
装完后 Composer 会自动更新 vendor/autoload.php,只要已引入它,就能直接 new 客户端。注意:Guzzle 7+ 默认启用 HTTP/2 支持(需 cURL ≥ 7.61.0 + OpenSSL 1.1.1+),但多数 API 不强制要求,不必特意关。
request('GET', 'https://httpbin.org/get', [
'timeout' => 5.0,
'headers' => ['User-Agent' => 'MyApp/1.0']
]);
echo $res->getStatusCode(); // 200
echo $res->getBody()->getContents(); // JSON 响应体
} catch (\GuzzleHttp\Exception\RequestException $e) {
echo $e->getMessage();
}
- 没报
Class not found就说明 autoload 没问题 - 如果卡住或抛
cURL error 60,大概率是 SSL 证书路径不对,临时加配置:'verify' => false(仅开发环境!生产必须配好 CA bundle) - 别在循环里反复 new
Client实例——复用同一个实例,它内部管理连接池
真正容易被忽略的是错误处理粒度:Guzzle 把网络失败(ConnectException)、HTTP 状态码异常(ClientException / ServerException)、超时(TimeoutException)分得很细,直接 try-catch RequestException 会漏掉部分底层错误,线上建议按具体子类分别应对。








