ErrorException (E_WARNING) stream_set_blocking () expects parameter 1 to be resource, null given

背景,laravel5.5开发网页部署到阿里云虚拟机上,用户注册时发送验证邮件出现以上报错,搜遍全网没找到解决方法,以下是解决步骤:

1)laravel中使用switchmailer框架发送邮件,该框架默认使用 stream_socket_client函数发送邮件,虚拟主机或轻云服务器禁用了此函数。 所以无法直接使用 switchmailer发送邮件。 可以通过修改默认的 switchmailer发送邮件的方式,实现使用 switchmailer发送邮件的功能。

2)找到报错位置vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php大概270行

$this->stream = @stream_socket_client($host.':'.$this->params['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext)

修改为

$this->stream  = @fsockopen($host, $this->params['port'], $errno, $errstr, $timeout)

3)由于虚拟主机或轻云服务器禁用了25号端口,邮件发送需要使用ssl465端口

4)前往虚拟主机后台php.ini设置打开fsockopen函数

至此,问题解决,如果帮助到你,给我点个赞!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值