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
Какая ошибка? Мне нужно изменить некоторые настройки на сервере?
Ответы
Ответ 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 не понравится, но это намного точнее и безопаснее!;)