APNS错误警告:stream_socket_client()错误

时间:2011-06-07 12:33:12

标签: php sockets push push-notification ssl-certificate

我正在努力工作,并且在我的服务器上启用了openssl,但问题仍然存在。如果运行MAc书,它会有什么不同吗?如果在那里完成,请回复。

我的代码:

<?php
$deviceToken = 'my device key';  // not putting in for security

$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);

$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';

$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);

$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);

socket_close($apns);
fclose($apns);
?>

错误:

  

警告:stream_socket_client()[function.stream-socket-client]:SSL   代码1操作失败.OpenSSL错误消息:   错误:14094410:SSL例程:SSL3_READ_BYTES:sslv3警报握手   第24行的F:\ xampp \ htdocs \ apns \ apns.php失败

     

警告:stream_socket_client()[function.stream-socket-client]:   无法在第24行的F:\ xampp \ htdocs \ apns \ apns.php中启用加密

     

警告:stream_socket_client()[function.stream-socket-client]:   无法连接到ssl://gateway.sandbox.push.apple.com:2195   第24行的F:\ xampp \ htdocs \ apns \ apns.php中的(未知错误)

如果有任何想法,请发帖。

由于

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我的解决方案是再次生成证书。我用这些命令做到了:

openssl x509 -in testpush_aps_development.cer -inform der -out TestPushCert.pem
openssl pkcs12 -nocerts -out TestPushKey.pem -in TestPush.p12

之后:

cat TestPushKey.pem TestPushCert.pem > TestPushCK.pem

请记住,在这种情况下,testpush_aps_development.cer是您在Apple开发者页面的APNS证书部分中拥有的证书。

希望这对你有所帮助,无论如何我确定这是证书的问题。

答案 1 :(得分:0)

检查您的证书,它们经常导致错误。