Google gRPC Failed to parse binary descriptor错误 Staging环境运行异常排查
报错信息:
Error: Fatal Error (1): Failed to parse binary descriptor in [../app/Vendor/googleads/google-ads-php/metadata/Google/Ads/GoogleAds/V8/Services/ConversionUploadService.php, line 124]
排查方案
该报错为Google Ads PHP SDK v8依赖的protobuf组件无法解析元数据二进制文件导致,仅在Staging环境出现可优先核对两个环境的以下配置差异:
- 核对protobuf扩展版本一致性:Google Ads PHP v8要求protobuf C扩展版本区间为3.19.x~3.21.x,禁止使用4.x版本,跨大版本会存在描述符解析兼容性问题。分别在Dev和Staging环境执行
php -r "echo \Google\Protobuf\Version::VERSION . PHP_EOL;"对比输出,确保两边版本完全一致。 - 核对Vendor目录完整性:部署Staging时如果是增量同步Vendor目录或者使用了缓存的依赖包,可能会导致SDK的metadata目录下二进制文件损坏或缺失。可删除Staging环境现有Vendor目录,重新执行
composer install --no-dev --optimize-autoloader拉取完整依赖验证。 - 核对protobuf实现方式一致性:如果Dev环境使用的是composer安装的纯PHP版
google/protobuf依赖,Staging不要额外安装protobuf C扩展,两种实现混用会触发解析报错。 - 核对文件权限配置:确认Staging环境下程序运行用户对
vendor/googleads/google-ads-php/metadata目录及下属所有文件拥有可读权限,权限不足会导致读取文件失败抛出解析错误。 - 核对PHP配置差异:对比Dev和Staging的php.ini配置,确认
protobuf.enable_fork_support参数配置一致,部分环境开启该参数会导致二进制描述符解析失败。
内容的提问来源于stack exchange,提问作者rpm
相关产品推荐
相关产品推荐

