APN-PHP-Code mit Warnung: stream_socket_client () [function.stream-socket-client]: Verbindung zu ssl: //gateway.sandbox.push.apple.com: 2195 nicht möglich

Ich versuche, Apple Push Notification mit PHP-Code zu implementieren. Hier ist mein Code

$deviceToken = 'My device token';
$passphrase = '';
$message = 'My first push notification!';

////////////////////////////////////////////////////////////////////////////////

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns-dev-cert.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

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

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

echo 'Connected to APNS' . PHP_EOL;

$body['aps'] = array(
    'alert' => $message,
    'sound' => 'default'
    );
$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);

Die PEM-Zertifikatdatei befindet sich im selben Verzeichnis wie die Datei. Dieser Code läuft einwandfrei auf meinem lokalen Rechner. Ich benutze MAMP. Ich erhalte eine Benachrichtigung auf meinen Geräten.

Aber wenn ich es auf dem Server versuche, funktioniert es nicht und gibt einen Fehler aus.

Warnung: stream_socket_client () [function.stream-socket-client]: Keine Verbindung zu ssl: //gateway.sandbox.push.apple.com: 2195 (Verbindung abgelehnt) in / home / nextgen / public_html / ApplicationGenerator / arrangementportal / iosapp / SimplePush / simplepush.php in Zeile 14 Verbindung fehlgeschlagen: 111 Verbindung abgelehnt

Wenn die Zertifikatdatei falsch ist, wie würde es auf meinem lokalen Server funktionieren?

Daraus komme ich nicht heraus. Könnt ihr mir helfen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage