Получение ошибок с использованием APNS PHP

Вот код, который я использую

<?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]: невозможно установить файл приватного ключа `apns-dev.pem 'в /home/bryan/sendpush.php в строке 14

Предупреждение: stream_socket_client () [function.stream-socket-client]: не удалось создать дескриптор SSL в /home/bryan/sendpush.php в строке 14

Предупреждение: stream_socket_client () [function.stream-socket-client]: Не удалось включить криптографию в /home/bryan/sendpush.php в строке 14

Предупреждение: stream_socket_client () [function.stream-socket-client]: невозможно подключиться к ssl: //gateway.sandbox.push.apple.com: 2195 (Неизвестная ошибка) в /home/bryan/sendpush.php в строке 14

Предупреждение: аргумент fwrite (): поставляемый аргумент не является допустимым ресурсом потока в /home/bryan/sendpush.php в строке 17

Предупреждение: socket_close () ожидает, что параметр 1 будет ресурсом, boolean указан в /home/bryan/sendpush.php в строке 19

Предупреждение: fclose (): предоставленный аргумент не является допустимым ресурсом потока в /home/bryan/sendpush.php в строке 20

На самом деле я довел до этих ошибок

Предупреждение: stream_socket_client () [function.stream-socket-client]: операция SSL завершилась неудачей с кодом 1. OpenSSL Сообщения об ошибках: ошибка: 14094410: процедуры SSL: SSL3_READ_BYTES: сбой вызова рукопожатия sslv3 в /home/bryan/PushService.php on line 27

Предупреждение: stream_socket_client () [function.stream-socket-client]: Не удалось включить криптографию в /home/bryan/PushService.php в строке 27

Предупреждение: stream_socket_client () [function.stream-socket-client]: невозможно подключиться к ssl: //gateway.sandbox.push.apple.com: 2195 (Неизвестная ошибка) в /home/bryan/PushService.php on line

  1. Используйте абсолютный путь для закрытого ключа вместо относительного пути.

  2. Убедитесь, что пользователю php (или пользователю веб-сервера, в зависимости от www-data , apache , nginx , www …) разрешено читать его ( chown , chmod ).

Я тоже получал эту ошибку. выяснили, что я неправильно установил разрешение в папке с файлом сертификата. Это сработало для меня:

 chmod 755 your_folder_that_has_certificate_files