2015-09-12 28 views
0

我有一个godaddy专用服务器,我已经从godaddy安装了SSL证书。Godaddy上的APNS无法连接

我使用下面的脚本来发送推送通知

$passphrase = 'pass'; 



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

// Open a connection to the APNS server 
$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; 

// Create the payload body 
$body['aps'] = array(
    'alert' => $message, 
    'sound' => 'default', 
    'badge' => 1, 
    'category' => 'NOTIFICATION' 
    ); 

$payload = json_encode($body); 

$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; 

$result = fwrite($fp, $msg, strlen($msg)); 

if (!$result) 
    echo 'Message not delivered' . PHP_EOL; 
else 
    echo 'Message successfully delivered' . PHP_EOL; 


fclose($fp); 

当我运行从我收到通知,但是当我由cron作业相同的代码这让我无法连接错误浏览器的代码。

我从终端运行脚本,如果正确的端口是开放的它给了我下面的错误

stream_socket_client(): Failed to enable crypto 

PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) 
+0

您好@Tushar找到任何解决方案 – Niyaz

回答

0

检查 -

http://www.canyouseeme.org。 (您正在寻找端口2195)

如果它没有打开,那么您需要调用GoDaddy并要求它们在专用服务器上打开端口2195。 (他们不会打开端口共享主机)

0

下面是一些提示,应该可以帮助你:

  1. 转到entrust.net/downloads/root_request.cfm和下载entrust_2048_ca.cer

  2. 添加以下代码: stream_context_set_option($ ctx,'ssl','cafile','entrust_2048_ca.cer');

  3. 确保路径是否正确:'../folder/file/ck.pem'?

  4. 切换并尝试sandbox和live ssl链接。