从后台进程连接到Apple推送通知服务

时间:2014-02-04 18:51:58

标签: php ios sockets ssl apple-push-notifications

我正在尝试从后台运行的PHP脚本发送推送通知(以root身份)。通常,当我在前台运行脚本时,一切正常。当我运行与后台进程相同的脚本时,不能说同样的事情。

$apnsHost = "gateway.push.apple.com";
$apnsPort = 2195;
$apnsCert = "../ck.pem";
$passphrase = "password";

$streamContext = stream_context_create();
$error;
$errorString;

stream_context_set_option($streamContext, "ssl", "local_cert", $apnsCert);
stream_context_set_option($streamContext, "ssl", "passphrase", $passphrase);

$apns = stream_socket_client("ssl://" . $apnsHost . ":" . $apnsPort, $error, $errorString, 20, STREAM_CLIENT_CONNECT, $streamContext);

$ apns在后台运行时始终返回false& $ error是0.根据PHP文档:

  

如果errno中返回的值为0且函数返回FALSE,则表示错误发生在connect()调用之前。这很可能是由于初始化套接字时出现问题。

我首先想到读取证书文件可能是一个权限问题,所以我在其上做了一个chmod 777。我也试过chowning文件&它的父目录。什么都行不通。 :(

额外信息:我正在运行nginx。

1 个答案:

答案 0 :(得分:0)

如果我能在gmail dot com here亲吻 borbas dot geri,我会的!设置证书文件的完整路径会修复它。