Подтвердить что ты не робот

Stream_socket_client не удалось подключиться (время ожидания подключения)

Я использую сертификат, а закрытый ключ

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $certfile);
stream_context_set_option($ctx, 'ssl', 'passphrase', $pass);
$fp = stream_socket_client('ssl://gateway.xyz.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);

Выполняется на моем локальном сервере XAMPP, но не работает на внешнем сервере:

Предупреждение: stream_socket_client() [function.stream-socket-client]: невозможно подключиться к ssl://gateway.sandbox.push.apple.com: 2195 (время ожидания подключения) в /home/biranchi/public _html/push.php в строке 42

Не удалось подключить 110

Какая ошибка? Мне нужно изменить некоторые настройки на сервере?

4b9b3361

Ответ 1

Я исправил проблему, открыв порт 2195 на рабочем сервере. Вы можете проверить, выполнив команду $ telnet gateway.push.apple.com 2195

-bash-3.2# telnet gateway.push.apple.com 2195

Trying 17.149.38.141...
Connected to gateway.push.apple.com (17.149.38.141).
Escape character is '^]'.
Connection closed by foreign host.

Ответ 2

Проверьте свои персональные настройки брандмауэра и убедитесь, что вы не блокируете это. Попробуйте отключить брандмауэр.

Кроме того, некоторые API, такие как запросы, поступают из реального домена, а не из рабочего стола. У меня нет оснований полагать, что Apple работает таким образом, но это тоже нужно проверить.

Также проверьте и запустите ping gateway.sandbox.push.apple.com и убедитесь, что у вас хорошее соединение.

Ответ 3

Вы должны установить свой брандмауэр, чтобы разрешить весь блок 17.0.0.0/8 (все это принадлежит Apple!). Проверьте ЭТО ОТВЕТ

И согласно Apple:

Серверы APN используют балансировку нагрузки, поэтому ваши устройства не всегда будут подключаться к одному и тому же общедоступному IP-адресу для уведомлений. Лучше всего разрешить доступ к этим портам на весь блок адресов 17.0.0.0/8, который назначен Apple.

Если вы используете брандмауэр CSF (например, я), я бы рекомендовал добавить эту строку в файл csf.allow:

tcp|out|d=2195|d=17.0.0.0/8

Использование этого вместо "17.0.0.0/8" позволит использовать только внешние подключения к Apple и, в частности, к порту 2195. NSA не понравится, но это намного точнее и безопаснее!;)