You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CI4环境下GuzzleHttp\Promise类找不到问题求助(依赖已安装)

解决Guzzle Promise类找不到的问题

针对你遇到的Class "GuzzleHttp\Promise" not found报错,结合你的环境(CI4、PHP8.0、Guzzle 7.9.2、guzzlehttp/promises 2.0.3),可以按以下步骤排查解决:

1. 修正命名空间与调用方式

Guzzle 7.x 搭配 guzzlehttp/promises 2.x 时,原有的Promise::settle()静态方法已迁移到Utils类中,而非Promise类本身。你需要调整代码:

  • 修改use语句:
use GuzzleHttp\Client;
use GuzzleHttp\Promise\Utils; // 替换原有的use GuzzleHttp\Promise;
  • 调用settle方法:
// Wait for all the asynchronous requests to complete
$responses = Utils::settle($promises)->wait();

2. 刷新Composer自动加载

即使vendor目录存在依赖文件,自动加载映射可能未更新,执行以下命令:

composer dump-autoload

3. 验证CI4的自动加载配置

确保CI4的入口文件(public/index.php)中已正确引入Composer的自动加载文件,通常默认会有这行:

require rtrim($systemPath, '\\/ ') . DIRECTORY_SEPARATOR . 'autoload.php';

这行代码会自动加载vendor/autoload.php,如果被注释或修改,需恢复。

4. 清除缓存

  • 清除CI4的应用缓存:删除writable/cache目录下的所有文件。
  • 清除OPcache缓存(如果开启):可以通过重启PHP服务,或在开发环境调用opcache_reset()方法重置。

5. 确认依赖文件结构

检查vendor/guzzlehttp/promises/src/目录:

  • 应有Utils.php文件,其中包含settle静态方法。
  • Promise.php是一个接口,而非包含静态方法的类,这也是直接调用Promise::settle()报错的核心原因。

内容的提问来源于stack exchange,提问作者spreaderman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 15:54:57