如何检索推送通知php的ck.pem文件

时间:2016-05-03 18:36:41

标签: php ssl cron apple-push-notifications

您好我从cron作业调用php脚本发送推送通知时遇到问题。但是,当我从终端调用脚本时,相同的脚本工作,因此我知道检索ck.pem时出现问题。当我从终端点击脚本时,我只使用行

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

获取ck.pem并且它可以工作,因为ck.pem文件在我的桌面和本地上。当我点击cron作业调用的脚本时,它本地没有ck.pem文件所以我将ck.pem文件上传到服务器,所以从cron作业调用的php脚本可以访问它,这就是代码我用来检索它

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', file_get_contents("http://www.website.com/Certificates/ck.pem"));
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

然而我得到了错误

  

PHP警告:stream_socket_client():无法启用加密

     

PHP警告:stream_socket_client():无法连接   ssl://gateway.sandbox.push.apple.com:2195(未知错误)

     

PHP警告:stream_socket_client():SSL操作失败并带有代码   1. OpenSSL错误消息:

所有这些错误都发生在以下细分的第三行代码中:

$fp = stream_socket_client(
    'ssl://gateway.sandbox.push.apple.com:2195', $err,
    $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

if (!$fp)
    exit("Failed to connect: $err $errstr" . PHP_EOL);

echo 'Connected to APNS' . PHP_EOL;

就像我说的那样我很确定它是因为ck.pem文件而且我确保端口2195和2196是打开的所以它不是那个我无法解决这个问题。任何帮助或建议将不胜感激!

1 个答案:

答案 0 :(得分:0)

使用此堆栈溢出链接解决了这个答案:iOS push notification does not work when using crontab scheduler

我正在以错误的方式检索ck.pem文件