Я хочу подключиться к веб-сервису, который отправляет смс. Я хочу подключиться к SoapClient, но он не может подключиться даже к серверу, но работает локально. Что заставляет это не работать?
Мой код был таким:
libxml_disable_entity_loader(false);
try {
$options = array(
'cache_wsdl' => WSDL_CACHE_MEMORY,
'trace' => 1,
'stream_context' => stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
),
'http' => array(
'user_agent' => 'PHPSoapClient'
),
))
);
$wsdlUrl = 'http://example.com/SendService.svc?wsdl';
$soapClientOptions = array(
'stream_context' => $options,
'cache_wsdl' => WSDL_CACHE_NONE
);
$client = new SoapClient($wsdlUrl, $soapClientOptions);
return $client;
} catch (Exception $e) {
die($e->getMessage());
}
Но я изменил содержание $options
на:
'encoding' => 'UTF-8',
'exceptions' => 1,
'trace' => TRUE,
// This below is the one I've downloaded from https://curl.haxx.se
// But I have set it to /ssl.pem which is my own certificate
// none of them work!
'local_cert' => '/cacert.pem',
// 'passphrase' => $this->passphrase,
//'ssl_method' => SOAP_SSL_METHOD_SSLv2,
'authentication' => SOAP_AUTHENTICATION_DIGEST,
'soap_version' => SOAP_1_2,
'cache_wsdl' => WSDL_CACHE_NONE,
'stream_context' => stream_context_create([
'ssl' => [
'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
]
])
Я думаю, что проблема может быть в этой строке local_cert
или должна быть новая строка для cafile
. Является ли корневой путь local_cert
и cafile
от корня, который я установил в virtualhost? Я имею в виду мой корень из /home/mysite/public_html
или /home
или что-то еще?
С чем это связано и как я могу это исправить?