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

Facebook Business PHP SDK运行示例报CrashReporter错误如何解决

问题根因

该报错由两个常见原因导致:

  1. PHP版本与SDK版本不兼容:Facebook Business PHP SDK 最新版本要求PHP 7.4及以上运行环境,PHP 7以下版本中ErrorException未实现Throwable接口,会触发参数类型不匹配的报错。
  2. SDK自身CrashReporter模块存在bug:部分版本的SDK未对崩溃上报的异常类型做兼容处理,参数强制声明为Throwable但实际传入了未实现该接口的异常实例。

解决方案

按优先级选择以下方式修复:

  • 优先升级PHP版本到7.4及以上,执行命令php -v可查看当前PHP版本,升级后重新运行脚本即可解决该问题。
  • 若暂时无法升级PHP版本,可通过禁用SDK的崩溃上报模块规避问题,在Api初始化代码后添加禁用CrashReporter的代码即可,修正后的完整代码如下:
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use FacebookAds\Api;
use FacebookAds\Logger\CurlLogger;
use FacebookAds\Object\AdAccount;
use FacebookAds\Object\Campaign;
use FacebookAds\Object\Fields\CampaignFields;

$app_id = "{app-id}";
$app_secret = "{appsecret}";
$access_token = "{access-token}";
$account_id = "act_{{adaccount-id}}";

Api::init($app_id, $app_secret, $access_token);
// 禁用崩溃上报模块,规避类型不匹配报错
Api::getInstance()->disableCrashReporter();

$account = new AdAccount($account_id);
$cursor = $account->getCampaigns();

// 遍历对象
foreach ($cursor as $campaign) {
  echo $campaign->{CampaignFields::NAME}.PHP_EOL;
}
  • 若需要保留崩溃上报功能,可手动修改vendor/facebook/php-business-sdk/src/FacebookAds/CrashReporter.php文件,将第167行buildParamsFromException方法的参数类型声明从Throwable修改为Exception,兼容传入的ErrorException实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:54:03