【问题标题】:Push notifications server implementation推送通知服务器实现
【发布时间】:2011-07-14 14:47:48
【问题描述】:

我正在尝试在我的服务器上运行 apns-php (http://code.google.com/p/apns-php/)(具有专用 IP 和端口 2195 的 Bluehost 为 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 列入白名单或 接受传入的连接 结束了吗?

有人可以帮我解决这个问题吗?有任何想法吗?谢谢!

【问题讨论】:

    标签: php push-notification


    【解决方案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
    )));
    

    我真的不知道这条线有什么意义,但知道推送通知工作正常。我怀疑它是否也能在生产服务器上正常工作。有人知道吗?

    【讨论】:

    • 我已经在我自己的网络服务器(Windows 7 上的 WAMP)上对其进行了测试,现在它也可以工作了。
    • 这意味着您正在禁用使用 Entrust 根证书颁发机构验证对等方,仔细检查您的根 CA 很可能您可能正在使用相同的文件进行 SSL 客户端身份验证和根 CA
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这个问题正是我在本地开发中看到的。我假设您想在服务器上取消注释该行并且证书都已正确设置。

      【讨论】:

        【解决方案4】:

        在我们的例子中,我们没有完成本教程的最后一部分; http://code.google.com/p/apns-php/wiki/CertificateCreation (认为​​这是可选的)

        这导致了与您完全相同的错误。

        在我们这样做之后,一切都按预期进行。

        【讨论】:

          【解决方案5】:

          我有同样的问题,我做错的是为 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

          【讨论】:

            猜你喜欢
            • 2015-10-16
            • 1970-01-01
            • 1970-01-01
            • 2011-11-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-28
            相关资源
            最近更新 更多