2009-09-26 117 views
16

我尝试使用本地MAC机上运行,​​但去了以下错误苹果推送通知服务

Warning: stream_socket_client() [function.stream-socket-client]: Unable to set private key file `/Applications/XAMPP/xamppfiles/htdocs/apns/apns-dev.pem’ in /Applications/XAMPP/xamppfiles/htdocs/apns/apns.php on line 9 

Warning: stream_socket_client() [function.stream-socket-client]: failed to create an SSL handle in /Applications/XAMPP/xamppfiles/htdocs/apns/apns.php on line 9 

Warning: stream_socket_client() [function.stream-socket-client]: Failed to enable crypto in /Applications/XAMPP/xamppfiles/htdocs/apns/apns.php on line 9 

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /Applications/XAMPP/xamppfiles/htdocs/apns/apns.php on line 9 

Warning: socket_close() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/apns/apns.php on line 11 

Warning: fclose() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/apns/apns.php on line 12 

我PEM认证从其他机器生成的,

所以我完全糊涂了什么我必须做现在。

请让我知道我需要做的,在本地主机

+0

我有同样的proble,我能够在我的本地XAMPP服务器上运行。 但它没有在我的外部服务器上运行。 – Biranchi 2009-11-23 09:40:18

+0

Biranchi嗨,只需用托管服务提供商检查白名单,将解决你的问题 – 2009-11-28 11:55:10

回答

60

我认为你可能已经导出的证书运行它,而不是从苹果供应.cer文件的私钥。

从markbates这些指令可助阵:

一旦你从 苹果应用程序证书,出口 你的密钥和证书的苹果作为 P12文件。这里是如何做到这一点走马观花 :

  1. 单击披露旁边的箭头,你的证书在钥匙串访问 并选择证书和 关键。
  2. 右键单击并选择Export 2 items…
  3. 从下拉菜单中选择p12格式并将其命名为cert.p12

现在隐蔽的P12文件到PEM文件:

$ openssl pkcs12 -in cert.p12 -out apple_push_notification_production.pem -nodes -clcerts 
+0

喜jessecurry 非常感谢您的建议 其伟大的工作,除了一个警告 警告港口 :socket_close():提供资源不是有效的套接字资源。 请问可能是什么问题? – 2009-09-29 06:22:13

+0

这听起来像一个PHP错误。你使用的是什么版本的PHP?你传递给socket_close()什么? – jessecurry 2009-09-29 13:09:34

+1

iam使用pHP版​​本5 $ apns = stream_socket_client('ssl://'。$ apnsHost。':'。$ apnsPort,$ error,$ errorString,2,STREAM_CLIENT_CONNECT,$ streamContext); socket_close($ apns); – 2009-09-30 11:53:36