title: connection in APNS server works from terminal but not from php server (IOS push notifications)
body: <p>if I run this:</p>
  
  <pre><code>openssl s_client -connect gateway.sandbox.push.apple.com:2195 
      -cert PushChatCert.pem -key PushChatKey.pem
  Enter pass phrase for PushChatKey.pem:
  </code></pre>
  
  <p>by following the tutorial in <a href="http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1" rel="nofollow">here</a> I can see the response and the connection to APNS server works fine.</p>
  
  <p>Then in my php server, I have that code for example:</p>
  
  <pre><code>// Put your device token here (without spaces):
  $deviceToken = '6bdccb83e15333b7dd29c5e45a20f7bc1b8291b52e1d017e0e41fceb9959e5ba';
  
  // Put your private key's passphrase here:
  $passphrase = 'code';
  
  // Put your alert message here:
  $message = 'My first push notification!';
  
  ////////////////////////////////////////////////////////////////////////////////
  
  $ctx = stream_context_create();
  stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
  stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
  
  // Open a connection to the APNS server
  $fp = stream_socket_client(
      'ssl://gateway.sandbox.push.apple.com:2195', $err,
      $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
  ////////////////////////////////////////////////////////////////////////////////
  
  $ctx = stream_context_create();
  stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
  stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
  
  // Open a connection to the APNS server
  $fp = stream_socket_client(
      'ssl://gateway.sandbox.push.apple.com:2195', $err,
      $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
  
  if (!$fp)
      exit("Failed to connect: $err $errstr" . PHP_EOL);
  
  echo 'Connected to APNS' . PHP_EOL;
  
  // Create the payload body
  $body['aps'] = array(
      'alert' =&gt; $message,
      'sound' =&gt; 'default'
      );
  
  // Encode the payload as JSON
  $payload = json_encode($body);
  
  // Build the binary notification
  $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
  
  // Send it to the server
  $result = fwrite($fp, $msg, strlen($msg));
  
  if (!$result)
      echo 'Message not delivered' . PHP_EOL;
  else
      echo 'Message successfully delivered' . PHP_EOL;
  
  // Close the connection to the server
  fclose($fp);
  </code></pre>
  
  <p>But I get a connection time out. What do you think it might be?</p>