Warning: stream_socket_client(): невозможно установить файл закрытого ключа
не удалось получить эти ошибки при запуске PHP в терминале как php simplepush.php
Warning: stream_socket_client(): Unable to set private key file `/users/accenture/Desktop/newAPNS/ck.pem' in /users/accenture/Desktop/newAPNS/simplepush.php on line 22
Warning: stream_socket_client(): failed to create an SSL handle in /users/accenture/Desktop/newAPNS/simplepush.php on line 22
Warning: stream_socket_client(): Failed to enable crypto in /users/accenture/Desktop/newAPNS/simplepush.php on line 22
Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /users/accenture/Desktop/newAPNS/simplepush.php on line 22
Failed to connect: 0
Я создал все сертификаты и файл pem с помощью статьи raywenderlich, http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1#comments
Ответы
Ответ 1
Проблема в том, что файл pem не правильный, я создал файл pem, используя http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1. Создание файла p12 и создание файла p12 у меня не работают. Правильный процесс для создания p12 и p12 для создания файла pem, как показано ниже
Получив сертификат Apple для своего приложения, экспортируйте свой ключ и сертификат Apple в виде файлов p12. Вот краткое руководство о том, как это сделать:
- Нажмите стрелку раскрытия рядом с вашим сертификатом в Keychain Access и выберите сертификат и ключ.
- Щелкните правой кнопкой мыши и выберите "Экспортировать 2 элемента…".
- Выберите формат p12 из выпадающего списка и назовите его cert.p12.
Теперь преобразуйте файл p12 в файл pem:
$ openssl pkcs12 -in cert.p12 -out apple_push_notification_production.pem -nodes -clcerts
Это работает для меня, теперь я получаю push-уведомление.
Ответ 2
Преобразование ключевого файла в pem рекомендуется в http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1 вызывало проблемы для меня.
Запуск
openssl pkcs12 -in keyname.p12 -out keyname.pem -nodes -clcerts
вместо
openssl pkcs12 -nocerts -out keyname.pem -in keyname.p12
решил мои проблемы.
Ответ 3
Я последовал за youtube, который почти такой же, как и статья raywenderlich. Я только что забыл добавить фразу PEM pass. После добавления, как описано здесь, он работал:
stream_context_set_option($ctx, 'ssl', 'passphrase', 'MyPassPhrase');
Ответ 4
Это решение для Reywenderlich Apple Push Notification Services Учебник
$deviceToken = ''; //Enter your token number
// Put your private key passphrase here:
$passphrase = '1234';//Enter ck.pem password
// Put your alert message here:
$message = 'My first push notification!';