0

Godaddy の SSL 証明書をインストールした Godaddy 専用サーバーがあります。

プッシュ通知を送信するために次のスクリプトを使用しています

$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) 
4

2 に答える 2

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. サンドボックスとライブ SSL リンクの両方を切り替えて試してください。

于 2017-03-16T10:20:15.043 に答える