How to solve segmentation fault when trying to mutate create AdGroupAd for app_ad in google api (php)
I'm trying to create an AdGroupAd using an existing groupAd, and i'm getting a "segmentation fault" error message I've been at this for more than a day now, but the lack of details on the error just makes this insane to understand what's wrong
running on docker
Client library: v5.0.0
Google Ads API: v5.0
PHP 7.4.12 (cli) (built: Nov 5 2020 20:24:10) ( NTS )
Zend Engine v3.4.0,
ionCube PHP Loader + ionCube24 v10.4.4
Zend OPcache v7.4.12
protobuff 3.14.0
grpc 1.33.1
my code: Assume createAdGroupAd() is called with a valid resource name for an adGroup in the $adGroup parameter and the type is CreativeType_Asset::TYPE_YOUTUBE in this case (although i tried with both types and both give out the error)
public function createAdGroupAd($adGroup, $data){ $service = $this->client->getAdGroupAdServiceClient(); $ad = $this->createAd($data, $data['asset']->type); $adGroupAd = new AdGroupAd([ 'ad' => $ad, 'status' => AdGroupAdStatus::PAUSED, 'ad_group' => $adGroup ]); $adGroupAdOperation = new AdGroupAdOperation(); $adGroupAdOperation->setCreate($adGroupAd); //this is the call causing the error $response = $service->mutateAdGroupAds( $this->customerId, [$adGroupAdOperation] ); return $response->getResults()->count() > 0 ? $response->getResults()[0]->getResourceName() : null; } public function createAd($data, $adType = null){ $service = $this->client->getAdServiceClient(); $appAdInfo = new AppAdInfo([ 'headlines' => array_map(function ($headline) { new AdTextAsset(['text' => $headline]); }, [$data['creative']->title1, $data['creative']->title2]), 'descriptions' => array_map(function ($description) { new AdTextAsset(['text' => $description]); }, [$data['creative']->description1, $data['creative']->description2]) ]); switch ($adType) { case CreativeType_Asset::TYPE_IMAGE: $appAdInfo->setImages([new AdImageAsset(['asset' => $data['assetResourceName']])]); break; case CreativeType_Asset::TYPE_YOUTUBE: $appAdInfo->setYoutubeVideos([new AdVideoAsset(['asset' => $data['assetResourceName']])]); break; default: break; } return new Ad([ 'app_ad' => $appAdInfo, 'type' => AdType::APP_AD]); }