我必须向 iOS 设备发送推送通知。我的连接必须通过代理启用。我尝试了一切,但没有成功。我有一个错误 110 连接超时。如果我只是尝试连接到 Apple push 的地址,它就可以使用 cURL。我不知道问题出在哪里。代理配置?PHP stream_context 错误的实现?
这是我的代码:
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'certificate.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', 'my_passphrase');
stream_context_set_option($ctx, 'ssl', 'verify_peer', false);
stream_context_set_option($ctx, 'http', 'proxy', 'tcp://my-proxy.net:8080');
stream_context_set_option($ctx, 'http', 'request_fulluri', true);
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err,$errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
var_dump($fp);
var_dump($err);
var_dump($errstr);
exit;
你有想法吗 ?
编辑:
它可以直接链接到 Squid 吗?我刚刚发现代理正在与 Squid 一起运行。我也尝试使用fopen()
函数而不是,stream_socket_client()
但它似乎不允许 ssl 协议。
这是我的 var_dump 输出:bool(false) int(110) string(20) "Connection timed out"
我也有这个警告:警告:stream_socket_client():无法连接到第 22 行 /share/www/website/test.php 中的 ssl://gateway.sandbox.push.apple.com:2195(连接超时)