SOAP-ERROR: Разбор WSDL: не удалось загрузить из

Я интегрирую API Google Adwords в моем веб-приложении, я получаю сообщение об ошибке при выполнении моего php-файла, т.е.

Ошибка:

Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /var/www/vhosts/healthcampaign.in/httpdocs/smscampaign/pages/FacebookAds.php on line 187 SoapFault Object ( [message:protected] => SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://adwords-sandbox.google.com/api/adwords/cm/v201406/CampaignService?wsdl' : failed to load external entity "https://adwords-sandbox.google.com/api/adwords/cm/v201406/CampaignService?wsdl" [string:Exception:private] => [code:protected] => 0 [file:protected] => /var/www/vhosts/healthcampaign.in/httpdocs/smscampaign/pages/FacebookAds.php [line:protected] => 219 [trace:Exception:private] => Array ( [0] => Array ( [file] => /var/www/vhosts/healthcampaign.in/httpdocs/smscampaign/pages/FacebookAds.php [line] => 219 [function] => SoapClient [class] => SoapClient [type] => -> [args] => Array ( [0] => https://adwords-sandbox.google.com/api/adwords/cm/v201406/CampaignService?wsdl [1] => Array ( [trace] => 1 ) ) ) ) [previous:Exception:private] => [faultstring] => SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://adwords-sandbox.google.com/api/adwords/cm/v201406/CampaignService?wsdl' : failed to load external entity "https://adwords-sandbox.google.com/api/adwords/cm/v201406/CampaignService?wsdl" [faultcode] => WSDL ) 

Проблема связана с SSL. Если вы тестируете API локально и получаете эту ошибку, попробуйте AdsSoapClientFactory.php быструю проверку – найдите в SDK AdWords PHP файл с именем AdsSoapClientFactory.php и обновите строку 142, чтобы добавить && false :

 // SSL settings. if ($soapSettings->getSslVerify() === true && false) { // explicitly disable SSL Verify 

Также есть некоторые полезные комментарии ниже этой строки кода. Разумеется, отключение проверки SSL не рекомендуется для производственных систем, но по крайней мере это может быть быстрым решением, чтобы не потерять рассудок о том, почему API проклятия не хочет работать.

Если это действительно решает проблему, подумайте о ее внедрении с помощью SoapSettings. Отмените изменения в AdsSoapClientFactory.php , а в вашем основном файле добавьте:

 use Google\AdsApi\Common\SoapSettingsBuilder; [...] $soapSettings= (new SoapSettingsBuilder()) ->disableSslVerify() ->build(); $session = (new AdWordsSessionBuilder()) ->fromFile() ->withOAuth2Credential($oAuth2Credential) ->withSoapSettings($soapSettings) ->build(); 

Как говорится в сообщении об ошибке … Недопустимый URL WSDL. Попытайтесь использовать это:

 https://adwords.google.com/api/adwords/cm/v201409/CampaignService?wsdl