使用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);
?>
我得到这些错误
警告:stream_socket_client()[function.stream-socket-client]:无法在第14行的/home/bryan/sendpush.php中设置私钥文件`apns-dev.pem'
警告:stream_socket_client()[function.stream-socket-client]:无法在第14行的/home/bryan/sendpush.php中创建SSL句柄
警告:stream_socket_client()[function.stream-socket-client]:无法在第14行的/home/bryan/sendpush.php中启用加密
警告:stream_socket_client()[function.stream-socket-client]:无法连接到14行/home/bryan/sendpush.php中的ssl://gateway.sandbox.push.apple.com:2195(未知错误)
警告:fwrite():提供的参数不是第17行中的/home/bryan/sendpush.php中的有效流资源
警告:socket_close()期望参数1是资源,布尔在第19行的/home/bryan/sendpush.php中给出
警告:fclose():提供的参数不是第20行中的/home/bryan/sendpush.php中的有效流资源
我现在已经明白了这些错误
警告:stream_socket_client()[function.stream-socket-client]:SSL操作失败,代码为1. OpenSSL错误消息:错误:14094410:SSL例程:SSL3_READ_BYTES:sslv3警报握手失败/home/bryan/PushService.php 27
警告:stream_socket_client()[function.stream-socket-client]:无法在第27行的/home/bryan/PushService.php中启用加密
警告:stream_socket_client()[function.stream-socket-client]:无法连接到/home/bryan/PushService.php上的ssl://gateway.sandbox.push.apple.com:2195(未知错误)
使用私钥的绝对路径而不是相对路径。
确保php用户(或web服务器用户,取决于.. www-data
, apache
, nginx
, www
...)被允许读取它( chown
, chmod
)。
我也得到这个错误。 发现我在拥有证书文件的文件夹上设置了错误权限。 这对我有效:
chmod 755 your_folder_that_has_certificate_files
链接地址: http://www.djcxy.com/p/57415.html