我正在使用PHP实现iOS推送通知,在过去的几个小时里,我一直在努力解决此错误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)
这种方式是如何以及为何发生的?