谁能帮我从 Google Ads API 调试“之前加载了原型描述符”

问题描述

运行此代码时出现此错误

$googleAdsClient->getGoogleAdsServiceClient()->search($customerId,$query,$page_size);

错误信息: proto descriptor was prevIoUsly loaded (included in multiple Metadata bundles?): google/ads/googleads/v5/enums/policy_topic_evidence_destination_not_working_dns_error_type.proto

$googleAdsClient 是 \Google\Ads\GoogleAds\Lib\V5\GoogleAdsClient一个实例。

getGoogleAdsServiceClient 方法来自 ServiceClientFactoryTrait trait /Google/Ads/GoogleAds/Lib/V5/ServiceClientFactoryTrait.PHP

我正在跑步:

PHP 7.4.1
grpc module version => 1.34.0
protobuf version => 3.14.0

通过 composer 安装的其他库:

google/grpc-gcp                       0.1.5      gRPC GCP library for channel management
google/protobuf                       v3.13.0.1  proto library for PHP
googleads/google-ads-PHP              v5.0.0     Google Ads API client for PHP
grpc/grpc                             1.30.0     gRPC library for PHP

我对描述符或 protobuf 库的了解不够,无法理解此错误。它几天前才开始发生,我认为我们没有做出任何会影响这一点的改变。任何帮助/指导将不胜感激。

编辑:忘记链接到 SDK https://github.com/googleads/google-ads-php

编辑:更新了以下库:

google/apiclient                     v2.9.1     Client library for Google Apis
google/apiclient-services            v0.161.0   Client library for Google Apis
google/auth                          v1.15.0    Google Auth Library for PHP
google/common-protos                 1.3        Google Api Common Protos for PHP
google/gax                           1.7.0      Google Api Core for PHP
google/grpc-gcp                      0.1.5      gRPC GCP library for channel management
google/protobuf                      v3.15.3    proto library for PHP
googleads/google-ads-PHP             v7.0.0     Google Ads API client for PHP
grpc/grpc                            1.35.0     gRPC library for PHP
google/protobuf                      v3.15.3    proto library for PHP

解决方法

我发现了这个问题。我通过 pecl install protobuf 安装了 C 实现。感觉我在 docker 容器中运行我的应用程序,每次我构建一个新镜像时,它都会安装最新版本的 protobuf。感觉我是在 2 月 22 日左右开始看到这个错误的>

为了解决这个问题,我通过 Dockerfile 中的 pecl install protobuf-3.14.0 命令降级到 3.14.0 版。这不是永久性修复,因为有时我想升级软件包,但我将不得不等待处理此问题的版本。

,

错误是因为您的项目有两个库为同一个文件 policy_topic_evidence_destination_not_working_dns_error_type.proto 提供了原型描述符。
看起来此问题已在版本 v6 中针对 Google 广告库 link

修复

只需将库更新到 v6 及更高版本(最新的是 v7),它应该可以解决问题 Latest Release

,

我有同样的错误,我注释掉了这一行

; extension=protobuf.so

在 /etc/php/7.4/apache2/php.ini 和 在 /etc/php/7.4/cli/php.ini 并重启apache

sudo service apache2 restart

错误消失了,我希望这对某人有帮助。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...