PHP使用phpredis链接redis错误

如题, 项目中使用phpredis链接 redis,偶尔报如下错误:

PHP Fatal error:  Uncaught exception 'RedisException' with message 'Failed to AUTH connection' in [no active file]:0
Stack trace:
#0 {main}

  thrown in [no active file] on line 0```
  1. check过项目的配置信息正确,此错误信息为偶尔出现

  2. 项目中使用redis处理session

  3. githubissues中发现有人遇到类似的问题,但也没有给出现的原因和怎么解决,传送门github

各位在项目中有遇到类似的问题的嘛, 还是直接使用 predis这个扩展呢?

阅读 15k
5 个回答

纯粹吐槽,phpredis 这个扩展是越来越蛋疼了。。。。

看错误是授权相关的错误,检查一下是否是Redis有密码,如果是集群部署的话,是否环境不一致

$client = new Predis\Client(array(
    'scheme'   => 'tcp',
    'host'     => '127.0.0.1',
    'port'     => 6379,
    'database' => 15,
    'password' => '密码'
));

提示的鉴权失败么

我也遇到这个报错了,使用 session.save_handler = redis 就报这个错,换成 files 就不会,

  • PHP 版本 7.1.16
  • phpredis 试过 4.0.1、3.1.6、3.1.5 等 3 个版本
  • Redis 版本 4.0.9

试过 tcpdump 抓包,strace 跟 php-fpm 进程,都没有看到有用的信息。现在准备降 Redis 的版本试试,楼上诸位解决了么?

我也遇到过这个问题。
发生问题的原因是:我的redis超时时间设置的是10秒,当php程序运行时间大于redis超时时间时,session会话提交的时候redis已经断开连接了,就会报出这个错误。
我的解决方法是:

  1. 增加redis的超时时间;
  2. 用完session后,使用session_write_close()或session_commit()方法提前结束此次会话。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题