2009-12-14 4 views
2

Voici le code que je utiliseObtenir les erreurs en utilisant APNS PHP

<?php 
$deviceToken = 'my device key'; // not putting in for security 

$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default'); 
$payload = json_encode($payload); 

$apnsHost = 'gateway.sandbox.push.apple.com'; 
$apnsPort = 2195; 
$apnsCert = 'apns-dev.pem'; 

$streamContext = stream_context_create(); 
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); 

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext); 

$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload; 
fwrite($apns, $apnsMessage); 

socket_close($apns); 
fclose($apns); 
?> 

et je reçois ces erreurs

Warning: stream_socket_client() [function.stream-socket-client]: Unable to set private key file `apns-dev.pem' in /home/bryan/sendpush.php on line 14

Warning: stream_socket_client() [function.stream-socket-client]: failed to create an SSL handle in /home/bryan/sendpush.php on line 14

Warning: stream_socket_client() [function.stream-socket-client]: Failed to enable crypto in /home/bryan/sendpush.php on line 14

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /home/bryan/sendpush.php on line 14

Warning: fwrite(): supplied argument is not a valid stream resource in /home/bryan/sendpush.php on line 17

Warning: socket_close() expects parameter 1 to be resource, boolean given in /home/bryan/sendpush.php on line 19

Warning: fclose(): supplied argument is not a valid stream resource in /home/bryan/sendpush.php on line 20

En fait, je maintenant l'ai eu jusqu'à ces erreurs

Warning: stream_socket_client() [function.stream-socket-client]: SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure in /home/bryan/PushService.php on line 27

Warning: stream_socket_client() [function.stream-socket-client]: Failed to enable crypto in /home/bryan/PushService.php on line 27

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /home/bryan/PushService.php on line

+0

ma réponse de bien vouloir se référer http://stackoverflow.com/questions/1769189/streamsocketclient-error-in-php/1990439#1990439 est comment je résolu la question. HIH – palaniraja

Répondre

-3

Je recevais cette erreur aussi. découvert que j'avais mis en place la permission erronée sur le dossier qui avait le fichier de certificat. Cela a fonctionné pour moi:

chmod 755 your_folder_that_has_certificate_files 
+0

Je ne vois pas comment le répertoire du certificat pourrait bénéficier de l'écriture ou de l'exécution de certificats. Sûrement '444' (lecture globale) serait suffisant? – Matthew

+1

Quelqu'un ne chmod pas simplement 777/755 l'ensemble du serveur. C'est une clé privée pour une raison. – DanFromGermany

+0

ne fonctionne pas, s'il vous plaît l'élaborer –

3
  1. Utilisez le chemin absolu pour la clé privée au lieu de chemin relatif.

  2. Assurez-vous que l'utilisateur php (ou l'utilisateur du serveur web, en fonction .. www-data, apache, nginx, www ...) est autorisé à le lire (chown, chmod).

Questions connexes