Laravel 5.1 GCM 推送通知 SSL 错误

Posted

技术标签:

【中文标题】Laravel 5.1 GCM 推送通知 SSL 错误【英文标题】:Laravel 5.1 GCM Push notification SSL error 【发布时间】:2016-12-16 15:54:22 【问题描述】:

我已通过\Zend\Http\ 客户端将GCMlaravel 5.1 PushNotification 连接起来。 它工作得很好。但突然它停止工作并产生一些exceptions

我的代码就像...

$collection = PushNotification::app('appNameandroid')->to ( $deviceToken ); 
$collection->adapter->setAdapterParameters(['sslverifypeer' => false]);
$collection->send ( $message );

我也尝试了以下代码,但它们都不起作用...

$collection = PushNotification::app('appNameAndroid')->to ( $deviceToken ); 
$new_client = new \Zend\Http\Client(null, array(
                'adapter' => 'Zend\Http\Client\Adapter\Socket',
                'sslverifypeer' => false
));
$collection->adapter->setHttpClient($new_client); 
$collection->send ( $message );

----------------------------and-----------------------------------

$collection = PushNotification::app('appNameAndroid')->to ( $deviceToken ); 
        $collection->adapter->setAdapterParameters(array(
        'ssl'=>array(
                'verify_peer' => false,
                'verify_peer_name' => false)
));
$collection->send ( $message );

例外是......

exception 'ErrorException' with message 'stream_socket_enable_crypto(): SSL     operation failed with code 1. OpenSSL Error messages:
error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol' in C:\xampp\htdocs\activ8-webapp\api\vendor\zendframework\zend-http\src\Client\Adapter\Socket.php:281

Next exception 'Zend\Http\Client\Adapter\Exception\RuntimeException' with message 'Unable to enable crypto on TCP connection gcm-http.googleapis.com' in C:\xampp\htdocs\activ8-webapp\api\vendor\zendframework\zend-http\src\Client\Adapter\Socket.php:308

【问题讨论】:

【参考方案1】:

基于此thread,如果您的证书不匹配,它将因该错误而失败。修复您的 SSL 配置,因为这不是 PHP 的错。如果您要连接的服务器的 SSL 配置不正确,您将收到类似这样的错误。尝试用好的证书替换无效、配置错误或自签名的证书。您可以通过SMTPOptions 属性允许不安全的连接。在早期版本中,subclassing the SMTP class 可以做到这一点,但不建议这样做。也尝试将app/config/email.php:smtp 更改为mail

在此link 上找到示例代码 sn-p:

$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);

您也可以查看这个相关链接:

how to fix stream_socket_enable_crypto(): SSL operation failed with code 1 Laravel SMTP driver with TLS encryption

希望这会有所帮助!

【讨论】:

我这里没有使用phpmail,请看我的问题。在我的情况下,我也尝试过,但工作正常。

以上是关于Laravel 5.1 GCM 推送通知 SSL 错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.1,向用户返回响应,然后执行一些代码 [关闭]

为啥 GCM 推送通知会重复?

如何在推送通知 (GCM) android 中发送图像?

为啥 GCM 不在 android 设备中提供推送通知?

GCM iOS 没有收到推送通知

发送少量通知后未从 GCM 收到推送通知