ApnsPHP не может подключиться к Apple Gateway
внезапно появилась действительно странная ошибка, заявив, что она не может подключиться к соответствующему шлюзу... любые предложения по исправлению?
Здесь вывод журнала:
Wed, 08 Jun 2011 15:05:44 +0200 ApnsPHP[21724]: INFO: Trying ssl://gateway.sandbox.push.apple.com:2195...
Wed, 08 Jun 2011 15:05:45 +0200 ApnsPHP[21724]: ERROR: Unable to connect to 'ssl://gateway.sandbox.push.apple.com:2195': (0)
Wed, 08 Jun 2011 15:05:45 +0200 ApnsPHP[21724]: INFO: Retry to connect (1/3)...
Wed, 08 Jun 2011 15:05:46 +0200 ApnsPHP[21724]: INFO: Trying ssl://gateway.sandbox.push.apple.com:2195...
Wed, 08 Jun 2011 15:05:47 +0200 ApnsPHP[21724]: ERROR: Unable to connect to 'ssl://gateway.sandbox.push.apple.com:2195': (0)
Wed, 08 Jun 2011 15:05:47 +0200 ApnsPHP[21724]: INFO: Retry to connect (2/3)...
Wed, 08 Jun 2011 15:05:48 +0200 ApnsPHP[21724]: INFO: Trying ssl://gateway.sandbox.push.apple.com:2195...
Wed, 08 Jun 2011 15:05:48 +0200 ApnsPHP[21724]: ERROR: Unable to connect to 'ssl://gateway.sandbox.push.apple.com:2195': (0)
Wed, 08 Jun 2011 15:05:48 +0200 ApnsPHP[21724]: INFO: Retry to connect (3/3)...
Wed, 08 Jun 2011 15:05:49 +0200 ApnsPHP[21724]: INFO: Trying ssl://gateway.sandbox.push.apple.com:2195...
Fatal error: Uncaught exception 'ApnsPHP_Exception' with message 'Unable to connect to 'ssl://gateway.sandbox.push.apple.com:2195': (0)' in /home/xxxx/xxxxx/ApnsPHP/Abstract.php:354
Ответы
Ответ 1
Это решение сработало для меня. Исходный ответ на Активация сервера уведомлений -
Я нашел решение, я не знаю, если он лучший, но он работает. На Abstract.php(этот файл является частью источника apns-php) Я прокомментировал строку 343. Теперь это выглядит так:
$streamContext = stream_context_create(array('ssl' => array(
//'verify_peer' => isset($this->_sRootCertificationAuthorityFile),
'cafile' => $this->_sRootCertificationAuthorityFile,
'local_cert' => $this->_sProviderCertificateFile
)));
Я действительно не знаю, в чем суть этой строки, но знаю, что уведомление push работает правильно.
Ответ 2
im my case я меняет строку 58 и 59 File ApnsPHP/Push.php
Эта
protected $_aServiceURLs = array(
'ssl://gateway.push.apple.com:2195', // Production environment
'ssl://gateway.sandbox.push.apple.com:2195' // Sandbox environment
); /< @type array Service URLs environments. */
С
protected $_aServiceURLs = array(
'gateway.push.apple.com:2195', // Production environment
'gateway.sandbox.push.apple.com:2195' // Sandbox environment
); /< @type array Service URLs environments. */
Ответ 3
Вы можете проверить наличие установленных сертификатов. Посмотрите на этот URL: https://code.google.com/p/apns-php/wiki/CertificateCreation для создания файла entrust_root_certification_authority.pem.
Вы можете пропустить проверку сертификата, прокомментировав следующую строку на sample_push.php:
//$push->setRootCertificationAuthority('entrust_root_certification_authority.pem');
Надеюсь, что это поможет. С наилучшими пожеланиями.
Ответ 4
Пожалуйста, проверьте порты, указанные в документе apple.
Вам нужно открыть порты в вашей стороне провайдера.
Ответ 5
Я получил ту же ошибку. Я много google и следую каждому шагу этого руководства, убедитесь, что мой файл pem создан правильно:
https://code.google.com/p/apns-php/wiki/CertificateCreation
тогда я запускаю команду ниже, чтобы проверить, является ли безопасная ссылка правильной или нет:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem -CApath /etc/ssl/certs/Entrust_Root_Certification_Authority.pem
Нажмите enter, и я получил следующее сообщение:
Enter pass phrase for apns-dev-key.pem:
тогда я понимаю, что я забыл заданную кодовую фразу для cert (это dev.pem в моем случае)
// Instantiate a new ApnsPHP_Push object
$this->push = new ApnsPHP_Push(
ApnsPHP_Abstract::ENVIRONMENT_SANDBOX,
'dev.pem'
);
// Set the Provider Certificate passphrase
$this->push->setProviderCertificatePassphrase($passphrase);
// Set the Root Certificate Autority to verify the Apple remote peer
$this->push->setRootCertificationAuthority('entrust_root_certification_authority.pem');
// Connect to the Apple Push Notification Service
$this->push->connect();
// Instantiate a new Message with a single recipient
$this->message = new ApnsPHP_Message($deviceToken);
установить правильную кодовую фразу для ппса apns, решить проблему.
Ответ 6
У меня была такая же проблема, и я ошибался, предоставляя тот же сертификат для проверки подлинности SSL-клиента и корневого ЦС, ниже кода работал у меня
$push = new ApnsPHP_Push(
ApnsPHP_Abstract::ENVIRONMENT_SANDBOX,
'ck.pem'
);
$push->setRootCertificationAuthority('entrust_root_certification_authority.pem');
https://code.google.com/p/apns-php/wiki/CertificateCreation
Ответ 7
Разработчику необходимо экспортировать сертификат APNS и его ключ по-разному. Если оба экспортируются за один раз, эта ошибка возникнет.