PHP не удается подключиться к сокету с шлюзом уведомлений Apple

Отказ от ответственности: на SO Я нашел много похожих вопросов и ответов, но никто не решил мою проблему .

У меня есть этот простой PHP-код:

<?php $deviceToken = "myDeviceToken"; $message = "Hello from server"; $badge = 1; $sound = "default"; // Construct the notification payload $body['aps'] = array( 'alert' => $message ); if ($badge) { $body['aps']['badge'] = $badge; } if ($sound) { $body['aps']['sound'] = $sound; } /* End of Configurable Items */ $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'my.pem'); $fp = stream_socket_client("ssl://gateway.sandbox.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); if (!$fp) { print "Failed to connect $err $errstrn"; return; } else { print "Connection OK\n"; } $payload = json_encode($body); $msg = chr(0) . pack("n", 32) . pack("H*", str_replace(" ", "", $deviceToken)) . pack("n", strlen($payload)) . $payload; print "sending message :" . $payload . "\n"; fwrite($fp, $msg); fclose($fp); ?> 

При вызове из браузера я получаю:

[13-Dec-2011 18:52:52] PHP Warning: stream_socket_client () [function.stream-socket-client]: операция SSL завершилась неудачно с кодом 1. OpenSSL Сообщения об ошибках: ошибка: 14094410: Подпрограммы SSL: SSL3_READ_BYTES: sslv3 alert сбой рукопожатия в /home/srv/public_html/myTest.php в строке 28

[13-Dec-2011 18:52:52] PHP Warning: stream_socket_client () [function.stream-socket-client]: Не удалось включить криптографию в /home/srv/public_html/myTest.php в строке 28

[13-Dec-2011 18:52:52] PHP Warning: stream_socket_client () [function.stream-socket-client]: невозможно подключиться к ssl: //gateway.sandbox.push.apple.com: 2195 (Неизвестная ошибка ) в /home/srv/public_html/myTest.php в строке 28

Любая идея о том, что происходит?

Некоторые случайные данные из Интернета, которые могли бы помочь:

  1. Это может быть проблема с сертификатом. Попробуйте параметры потока allow_self_signed и verify_peer чтобы проверить это.

  2. Попробуйте явно использовать sslv2:// или sslv3:// ?

  3. Проблема разрешения на "/ dev / urandom"