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 и его ключ по-разному. Если оба экспортируются за один раз, эта ошибка возникнет.