Guzzle Error count(): 参数必须是一个数组或一个在

Dej*_*ima 3 php google-api google-analytics-api google-api-php-client

我正在关注下面的文章, https://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/web-php

但是最后,当我尝试使用示例代码(HelloAnalytics.php)时,它会在命令行中显示如下错误并且无法获取数据;

PHP 警告:count(): Parameter must be an array or an object that implementation Countable in C:\xampp\htdocs\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 67

警告:count(): Parameter must be an array or an object that implementation Countable in C:\xampp\htdocs\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 67 PHP Warning: count(): Parameter must是第 67 行 C:\xampp\htdocs\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php 中实现 Countable 的数组或对象

警告:count():参数必须是在 C:\xampp\htdocs\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php 中实现 Countable 的数组或对象,第 67 行 PHP 致命错误:未捕获的 Google_Service_Exception:{" error":{"errors":[{"domain":"usageLimits","re​​ason":"accessNotConfigured","message":"Project 687417168367 未找到且不能用于 API 调用。如果它是最近创建的,通过访问https://console.developers.google.com/apis/api/analytics.googleapis.com/overview?project=687417168367启用 Google Analytics API,然后重试。如果您最近启用了此 API,请等待几分钟以进行操作传播到我们的系统并重试。","extendedHelp":" https://console.developers.google。com/apis/api/analytics.googleapis.com/overview?project=687417168367"}],"code":403,"message":"项目 687417168367 未找到,无法用于 API 调用。如果它是最近创建的,请访问https://console.developers.google.com/apis/api/analytics.googleapis.com/overview?project=687417168367启用 Google Analytics API,然后重试。如果您最近启用了此 API,请等待几分钟,让操作传播到我们的系统并重试。"}} 位于 C:\xampp\htdocs\vendor\google\apiclient\s 位于 C:\xampp\htdocs\vendor\ google\apiclient\src\Google\Http\REST.php 第 118 行

项目 687417168367 未找到,不能用于 API 调用。如果它是最近创建的,请通过访问启用 Google Analytics APIhttps://console.developers.google.com/apis/api/analytics.googleapis.com/overview?project=687417168367然后重试。如果您最近启用了此 API,请等待几分钟,让操作传播到我们的系统并重试。"}} 位于 C:\xampp\htdocs\vendor\google\apiclient\s 位于 C:\xampp\htdocs\vendor\ google\apiclient\src\Google\Http\REST.php 第 118 行

有人可以帮助我吗?谢谢

DaI*_*mTo 9

如这里所述 count():参数必须是数组或对象

请尝试升级您的 Guzzle 版本。

问题在于 PHP 7.2 中 count() 的参数不能为 NULL。当 $this->handles 等于 NULL 时,会显示第一篇文章中的警告。只需将 CurlFactory.php 中的第 67 行替换为以下内容:

if (($this->handles ? count($this->handles) : 0) >= $this->maxHandles) {


KaN*_*3d4 5

有些人在升级到 Mac OS Catalina 时可能会遇到这个问题(在本地环境中)。这将我的 php 版本从 7.1 升级到 7.3,所以我在 CurlFactory 上遇到了同样的问题(使用了 Guzzle 的 6.2.1 版本)。

这可以通过将您的 Guzzle 版本更新到 6.3.0(最低)来解决。 如何做到这一点

"require": {
    "guzzlehttp/guzzle": "^6.3.0"
}
Run Code Online (Sandbox Code Playgroud)

然后在终端中(在项目的根目录中):

composer update
Run Code Online (Sandbox Code Playgroud)

或者,如果您无法更改 Guzzle 版本(出于某种原因……这是我的情况)

  • 相反,您可以通过安装 7.1 来更改您的 php 版本(在我的示例中使用自制软件。如果您没有它,您可以在此处找到/安装:https : //brew.sh/index

然后在终端类型中:

brew update
brew install php@7.1
Run Code Online (Sandbox Code Playgroud)

在某些情况下,您必须使用以下命令链接到 php 7.1:

brew link php@7.1
Run Code Online (Sandbox Code Playgroud)

最后,重新启动您的终端。