2009-11-20 15 views
12

Sto usando il certificato, e il privato chiavestream_socket_client in grado di connettersi (connessione scaduta)

$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); 

La sua esecuzione nel mio locale XAMPP Server, ma non il suo lavoro nel server esterno:

Avviso: stream_socket_client() [function.stream-socket-client]: impossibile connettersi a ssl: //gateway.sandbox.push.apple.com: 2195 (Timeout connessione scaduto) in/home/biranchi/public_html/push .php on line 42

Faile d per connettere 110

Qual è l'errore? Devo cambiare qualche impostazione nel server?

risposta

18

Ho risolto il problema aprendo la porta 2195 sul server di produzione. È possibile verificare dalla seguente comando $ 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. 
+0

hey @palaniraja, uso LittleSnitch su Mac e ho attivato la porta 2195 sia in entrata che in uscita. Si sta ancora chiudendo dopo un po 'di tempo ........ qualche suggerimento? –

+0

quindi stai testando lo script con la tua macchina? come server? potrebbe provare a disabilitare littlesnitch per un po 'di tempo. Immagino che Apple maneggi se hai una connessione aperta senza spingere alcun dato (inattivo). – palaniraja

+1

sto provando da localhost ....... In piccolo spia, ho attivato SILENT MODE> Consenti tentativi di connessione ............ ancora senza fortuna ....... cosa esattamente telnet mostrerebbe se non si sta connettendo con la porta? nel mio caso, mostra che il carattere di escape è '^]'. 'Quindi rimane lì per un po' di tempo ... Dopo circa un minuto o due, mostra 'Connessione chiusa da host straniero. È normale? –

4

Controlla le impostazioni del tuo firewall personale e assicurati di non bloccarlo. Prova a disabilitare il firewall.

Inoltre, alcune API come le richieste provengono da un dominio effettivo anziché da un desktop. Non ho motivo di credere che Apple funzioni in questo modo, ma è anche qualcosa da controllare.

Assicurati inoltre di eseguire il ping di gateway.sandbox.push.apple.com e assicurati di avere una buona connessione.

1

È necessario impostare il firewall per consentire a tutti il ​​blocco 17.0.0.0/8 (tutto appartiene ad Apple!). Controllare THIS ANSWER

E secondo Apple:

I server APN utilizzano il bilanciamento del carico, in modo che le apparecchiature non sempre connettersi allo stesso indirizzo IP pubblico per le notifiche. È meglio consentire l'accesso a queste porte sull'intero blocco indirizzi 17.0.0.0/8, che è assegnato ad Apple.

Se si utilizza un firewall CSF (come me), io consiglierei di aggiungere questa linea al file di csf.allow:

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

Usando questo invece di "17.0.0.0/ 8 "consentirà solo connessioni outbond ad Apple e in particolare alla porta 2195. NSA non gli piacerà ma questo è molto più preciso e sicuro! ;)

Problemi correlati