使用PHP发送iOS推送通知时出错

使用PHP发送iOS推送通知时出错,php,ios,apple-push-notifications,Php,Ios,Apple Push Notifications,尝试使用PHP发送连接APN的“推送通知”时,我遇到以下错误: Warning: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed Warning: stream_socket_client(): Failed to

尝试使用PHP发送连接APN的“推送通知”时,我遇到以下错误:

Warning: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 

Warning: stream_socket_client(): Failed to enable crypto

Warning: stream_socket_client(): unable to connect to ssl://gateway.push.apple.com:2195 (Unknown error) 
这是我的密码:

$payload = '{"aps":{"alert":"' . $message . '","sound":"default"}}';

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'Certificate.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
stream_context_set_option($ctx, 'ssl', 'cafile', 'entrust_2048_ca.cer');

$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195',      $err, $errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx);

$msg = chr(0) . pack('n', 32) . pack('H*', $item) . pack('n', strlen($payload)) . $payload;
$result = fwrite($fp, $msg, strlen($msg));
 fclose($fp);
添加以下行修复了该问题

`stream_context_set_option($ctx, 'ssl', 'cafile', 'entrust_2048_ca.cer');`

要求服务器管理员为传出连接打开端口
2195
2196
。这将解决您的问题。

为我们获取您的php代码:PYes,请共享您的代码。听起来您缺少(1)TLS 1.0及以上版本,(2)服务器名称指示,(3)可能缺少委托.net证书颁发机构(2048)根。另见@jww谢谢。问题在于缺少Trust.net证书颁发机构(2048)。在下载委托根证书
stream_context_set_选项($ctx,'ssl','cafile','trust_2048_ca.cer')后添加了此行。通知现在很好谢谢你Kenil。。即使端口是打开的,但没有
委托\u 2048\u ca.cer
,它也会遇到错误:14090086