Push-уведомления работают в браузере, а не в командной строке

У меня есть php файл для запуска apns. И это работает, когда я вызываю веб-страницу в браузере. Однако это не работает на терминале с вызовом

php deneme.php

Я подтверждаю, что файл .pem создан правильно. А также определить его местоположение в php файле тоже правильно (потому что корректно работать в браузере). Я выбежал с опцией. Я надеюсь, что вы даете мне идею.

Файл deneme.php:

<?php
$apnsServer = 'ssl://gateway.sandbox.push.apple.com:2195';

$privateKeyPassword = 'MyPassword123';
$message = 'Test Push Notifications';

$deviceToken =
'2877b691ffd9a3edfa45ee31ff25083f1845e016e7902d130eb09713b1c2ed2f';

$pushCertAndKeyPemFile =  $_SERVER['DOCUMENT_ROOT'].'/ck.pem';// 'ck.pem';
$stream = stream_context_create();
stream_context_set_option($stream,
'ssl',
'passphrase',
$privateKeyPassword);
stream_context_set_option($stream,
'ssl',
'local_cert',
$pushCertAndKeyPemFile);

$connectionTimeout = 20;
$connectionType = STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT;
$connection = stream_socket_client($apnsServer,
$errorNumber,
$errorString,
$connectionTimeout,
$connectionType,
$stream);
if (!$connection){
echo "Failed to connect to the APNS server. Error no = $errorNumber<br/>";
exit;
} else {
echo "Successfully connected to the APNS. Processing...</br>";
}
$messageBody['aps'] = array('alert' => $message,
'sound' => 'default',
'badge' => 2,
);
$payload = json_encode($messageBody);
$notification = chr(0) .
pack('n', 32) .
pack('H*', $deviceToken) .
pack('n', strlen($payload)) .
$payload;
$wroteSuccessfully = fwrite($connection, $notification, strlen($notification));
if (!$wroteSuccessfully){
echo "Could not send the message<br/>";
}
else {
echo "Successfully sent the message<br/>";
}
fclose($connection);
?>

0

Решение

Нет $_SERVER[] Суперглобальные переменные доступны при запуске из CLI, так как не работает ни один сервер. замещать$_SERVER['DOCUMENT_ROOT'].'/ck.pem'; с абсолютным путем к вашему ck.pem файл.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector