苹果推送通知

5

我有一个位于路径/var/www/vhosts/hostname/httpdocs/webservices的PHP脚本,我在那里有PHP脚本和.pem文件,并且我已正确地在脚本中调用了.pem文件,但是当我运行脚本时,我没有收到推送通知,而是得到了警告,如下所示:

Warning: stream_socket_client() [function.stream-socket-client]: Unable to set local cert chain file `ck_push_test.pem'; Check that your cafile/capath settings include details of your certificate and its issuer in /var/www/vhosts/ipartyapps.com/httpdocs/webservices/testPush.php on line 12

Warning: stream_socket_client() [function.stream-socket-client]: failed to create an SSL handle in /var/www/vhosts/ipartyapps.com/httpdocs/webservices/testPush.php on line 12

Warning: stream_socket_client() [function.stream-socket-client]: Failed to enable crypto in /var/www/vhosts/ipartyapps.com/httpdocs/webservices/testPush.php on line 12

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.push.apple.com:2195 (Unknown error) in /var/www/vhosts/ipartyapps.com/httpdocs/webservices/testPush.php on line 12
Failed to connect 0

我已经仔细检查了所有路径、权限以及脚本和.pem文件的所有者/组,但仍无法收到推送通知。

这似乎不仅仅是检查一些本地权限:“检查您的cafile/capath设置是否包含您的证书及其发行者的详细信息” - Pekka
你能否为我解释一下“cafile/capath”设置的含义,以及在哪里查找或如何更改它们? - Vicky Dev
@VIVEK 不好意思,看起来似乎与OpenSSL有关。这个问题可能更适合在serverfault.com上讨论,我投票将其迁移至那里。 - Pekka
好的David和Pekka,我已经将这个问题发布到网站管理员那里了,能否请有人回复或者告诉你认识的其他人来回复? - Vicky Dev
我的问题刚被迁回到stackoverflow并关闭了。请有人帮我解决这个问题,因为这很紧急。 - Vicky Dev
显示剩余3条评论
2个回答

1
可能是因为您不经意地尝试从运行脚本的目录中查找.pem文件,而不是相对于.php脚本文件进行查找,所以才会出现错误。 换句话说,使用相对路径而不是绝对路径。
$location = "file.pem";

而不是

$location = dirname(__FILE__)."/file.pem";

你能把你的代码发出来,这样我们就可以检查一下吗?

1

您是否检查了使用的正确pem文件?(即已连接私钥和证书的文件?)

打开您的pem文件并检查它是否像下面这样具有证书和私钥。

-----BEGIN CERTIFICATE-----
<certificate details>
-----END CERTIFICATE-----
-----BEGIN ENCRYPTED PRIVATE KEY-----
<private key>
-----END ENCRYPTED PRIVATE KEY-----

我的问题在移动正确的pem文件后得到了解决。


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