推送通知服务器实现

3
我正在尝试在我的服务器上(具有专用IP和打开TCP和UDP端口2195)上运行apns-php(http://code.google.com/p/apns-php/)。
我遇到了这个错误:
“致命错误:无法连接到'ssl://gateway.sandbox.push.apple.com:2195'的ApnsPHP_Exception异常:(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列入白名单或接受其端口的传入连接?
有人能帮我解决这个问题吗?任何想法?谢谢!
5个回答

11

我已经找到了一个解决方案,不知道是否是最好的,但它有效。在Abstract.php文件中(该文件是apns-php源代码的一部分),我已经注释掉了第343行。现在它看起来像这样:

$streamContext = stream_context_create(array('ssl' => array(
//'verify_peer' => isset($this->_sRootCertificationAuthorityFile),
'cafile' => $this->_sRootCertificationAuthorityFile,
'local_cert' => $this->_sProviderCertificateFile
)));

我真的不知道这行代码的意义,但是我知道推送通知已经正常工作了。我的疑虑是在生产服务器上它是否也能正常工作。有人知道吗?


1
我已经在我的Web服务器上进行了测试(Windows 7上的WAMP),现在它也可以正常工作。 - Sebastian
你也可以查看这个链接:https://groups.google.com/forum/#!topic/apns-php/IdzCrxPze7A - Jacksonkr
这意味着您正在使用Entrust根证书颁发机构禁用验证对等体,请仔细检查您的根CA,很可能您正在使用相同的文件进行SSL客户端身份验证和根CA。 - Nish

0

0

您可能需要联系苹果... 因为听起来苹果已经阻止了您的应用程序访问他们的网关... 您需要联系苹果以便获得您的IP地址或Web应用程序的批准。


0

我曾经遇到过同样的问题,我的错误在于为SSL客户端身份验证和根CA提供了相同的证书,下面的代码对我有用:

$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


0

这个问题正是我在本地开发中遇到的。我假设你想在服务器上正确设置所有证书后取消注释该行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接