stream_socket_client(): не удается установить файл закрытого ключа

#php #ios #sockets #ssl

#php #iOS #сокеты #ssl

Вопрос:

Я внедряю Push-уведомления iOS с помощью PHP, и последние пару часов я боролся с этой ошибкой stream_socket_client(): Unable to set private key file .
Я уже сталкивался с различными связанными проблемами в SO, но пока мне ничего не помогло.

В любом случае я сделал интересное открытие.
Это мой код:

 $context = stream_context_create();
stream_context_set_option($context, 'ssl', 'local_cert', $this->sslPem);
stream_context_set_option($context, 'ssl', 'passphrase', $this->passPhrase);

$this->apnsConnection = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $error,
    $errorString, 60, STREAM_CLIENT_CONNECT, $context);

var_dump($this->apnsConnection);
  

Выводит:
stream_socket_client(): Unable to set private key file

Но в тот момент, когда я удаляю протокол ( ssl:// ) из адреса сокета для подключения, он успешно подключается.

 $this->apnsConnection = stream_socket_client('gateway.sandbox.push.apple.com:2195', $error,
    $errorString, 60, STREAM_CLIENT_CONNECT, $context);

var_dump($this->apnsConnection);
  

Выводит:
resource(93, stream)

Как и почему это происходит таким образом?