2

これが私が使っているコードです

<?php
$deviceToken = 'my device key';  // not putting in for security

$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);

$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';

$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);

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

$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);

socket_close($apns);
fclose($apns);
?>

そして私はこれらのエラーを受け取ります

警告:stream_socket_client()[function.stream-socket-client]:14行目の/home/bryan/sendpush.phpに秘密鍵ファイル`apns-dev.pem'を設定できません

警告:stream_socket_client()[function.stream-socket-client]:14行目の/home/bryan/sendpush.phpにSSLハンドルを作成できませんでした

警告:stream_socket_client()[function.stream-socket-client]:14行目の/home/bryan/sendpush.phpで暗号を有効にできませんでした

警告:stream_socket_client()[function.stream-socket-client]:14行目の/home/bryan/sendpush.phpのssl://gateway.sandbox.push.apple.com:2195(不明なエラー)に接続できません

警告:fwrite():指定された引数は17行目の/home/bryan/sendpush.phpの有効なストリームリソースではありません

警告:socket_close()は、パラメーター1がリソースであると想定しています。19行目の/home/bryan/sendpush.phpにブール値が指定されています。

警告:fclose():指定された引数は20行目の/home/bryan/sendpush.phpの有効なストリームリソースではありません

私は実際にこれらのエラーにそれを理解しました

警告:stream_socket_client()[function.stream-socket-client]:コード1でSSL操作が失敗しましたOpenSSLエラーメッセージ:エラー:14094410:SSLルーチン:SSL3_READ_BYTES:sslv3オンラインの/home/bryan/PushService.phpでハンドシェイクの失敗を警告します27

警告:stream_socket_client()[function.stream-socket-client]:27行目の/home/bryan/PushService.phpで暗号を有効にできませんでした

警告:stream_socket_client()[function.stream-socket-client]:/home/bryan/PushService.phpオンラインのssl://gateway.sandbox.push.apple.com:2195(不明なエラー)に接続できません

4

2 に答える 2

3
  1. 相対パスではなく、秘密鍵の絶対パスを使用します。

  2. php ユーザー (または、場合によっては Web サーバー ユーザー) が読み取りを許可されていることを確認してください( 、www-data) 。apachenginxwwwchownchmod

于 2015-06-25T22:25:37.017 に答える
-3

このエラーも発生していました。証明書ファイルがあるフォルダーに間違ったアクセス許可を設定したことがわかりました。これは私のために働いた:

chmod 755 your_folder_that_has_certificate_files
于 2012-12-24T06:06:42.913 に答える