stream_socket_client 无法连接(连接超时)
Posted
技术标签:
【中文标题】stream_socket_client 无法连接(连接超时)【英文标题】:stream_socket_client unable to connect (connection timed out) 【发布时间】:2010-12-18 15:47:52 【问题描述】:我正在使用证书和私钥
$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]:无法连接到 /home/biranchi/public_html/ 中的 ssl://gateway.sandbox.push.apple.com:2195(连接超时) 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.
【讨论】:
嘿@palaniraja,我在 Mac 上使用 LittleSnitch,并且我已经启用了传入和传出端口 2195。一段时间后它仍然关闭........有什么建议吗? 所以您正在用您的机器测试脚本?作为服务器?可能会尝试禁用 littlesnitch 一段时间。如果你有一个打开的连接而不推送任何数据(空闲),我猜苹果会节流。 我正在从 localhost 进行测试........在小告密者中,我启用了 SILENT MODE > Allow Connection Attempts............但没有运气...... .....如果没有与端口连接,telnet 究竟会显示什么?在我的情况下,它最多显示Escape character is '^]'.
然后在那里停留一段时间......大约一两分钟后,它显示Connection closed by foreign host.
这正常吗?
此端口 2195 是否必须从我的托管服务提供商处打开。我在共享服务器(不是 VPS)上。请帮忙。
@rjBombil 您可以询问您的托管服务提供商。有时他们可能会为域启用。【参考方案2】:
检查您的个人防火墙设置,并确保您没有阻止它。尝试禁用防火墙。
此外,一些 API 喜欢来自实际域而不是桌面的请求。我没有理由相信 Apple 会以这种方式工作,但这也需要检查。
还要确保 ping gateway.sandbox.push.apple.com 并确保连接良好。
【讨论】:
【参考方案3】:您必须将防火墙设置为允许所有 17.0.0.0/8 块(它都属于 Apple!)。检查THIS ANSWER
并根据Apple:
APNs 服务器使用负载平衡,因此您的设备不会总是连接到相同的公共 IP 地址以接收通知。最好在分配给 Apple 的整个 17.0.0.0/8 地址块上允许访问这些端口。
如果您使用 CSF 防火墙(像我一样),我建议将此行添加到 csf.allow 文件中:
tcp|out|d=2195|d=17.0.0.0/8
然后重新启动 CSF。使用上面的而不是仅使用“17.0.0.0/8”将只允许与 Apple 的外向连接,特别是与端口 2195 的连接。NSA 不会喜欢它,但这更精确和安全! ;)
【讨论】:
以上是关于stream_socket_client 无法连接(连接超时)的主要内容,如果未能解决你的问题,请参考以下文章
Laravel5.5 邮件发送报错:stream_socket_client()
使用PHPMailer 中的报错解决 "Connection failed. Error #2: stream_socket_client(): SSL operation failed w