Внедрение сервера уведомлений

Я пытаюсь сделать работу apns-php (http://code.google.com/p/apns-php/) на моем сервере (Bluehost с выделенным IP и портом 2195 для tcp и udp).

Я получаю эту ошибку:

Неустранимая ошибка: исключить исключение «ApnsPHP_Exception» с сообщением «Не удается подключиться к« ssl: //gateway.sandbox.push.apple.com: 2195 »: (0)» в / home2 / xxxxx / public_html / xxxxx / pns / ApnsPHP /Abstract.php:352 Трассировка стека: # 0 /home2/xxxxx/public_html/xxxxx/pns/ApnsPHP/Abstract.php(295): ApnsPHP_Abstract -> _ connect () # 1 / home2 / xxxxx / public_html / xxxxx / pns / sample_push.php (41): ApnsPHP_Abstract-> connect () # 2 {main} брошен в /home2/xxxxx/public_html/xxxxx/pns/ApnsPHP/Abstract.php в строке 352

У меня есть контакт с поддержкой Bluehost, и они сказали мне следующее:

Спасибо что связались с нами. Если кажется, что сервер ssl: //gateway.sandbox.push.apple.com: 2195 * отказывается принять соединение, сделанное из вашей учетной записи. Есть ли способ, по которому вы можете настроить белый выделенный IP-адрес или принять входящие соединения на их конце?

Кто-то может помочь мне решить эту проблему? Есть идеи? Благодаря!

Я нашел решение, я не знаю, является ли оно лучшим, но оно работает. В 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-уведомление работает правильно. Я сомневаюсь, что он будет работать правильно и на сервере производства. Кто-то знает?

вам может потребоваться связаться с яблоком .. как по тому, что это звучит, так это то, что яблоко заблокировало приложение ур от доступа к их шлюзу .. вам нужно будет связаться с яблоком, чтобы вы могли получить свой IP-адрес или одобренное веб-приложение

Эта проблема – именно то, что я видел в местном развитии. Я предполагаю, что вы хотите раскомментировать эту строку, как только она появится на сервере, и все сертификаты настроены правильно.

В нашем случае мы не выполнили последнюю часть этого урока; http://code.google.com/p/apns-php/wiki/CertificateCreation (считая, что это необязательно)

Это привело к тем же ошибкам, что и у вас.

После этого все работало, как ожидалось.

У меня была такая же проблема, и я ошибался, предоставляя тот же сертификат для проверки подлинности 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