问下为什么我laravel连接redis连不上?

当我执行:php7.3 artisan key:generate
结果提示:

 Predis\Connection\ConnectionException  : `AUTH` failed: WRONGPASS invalid username-password pair [tcp://127.0.0.1:6379]

php7.3 -m

[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
igbinary
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
redis
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib

问下是我少装了redis插件还是哪里写错了?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

应该是缓存问题,需要删除 bootstrap 里面 app/config.php 删除配置文件

1年前 评论
讨论数量: 15

这和这个命令没关系吧 是框架加载的时候 检查了redis连接吧, 你要看一下redis的配置

1年前 评论
donggan (楼主) 1年前
Smilephp (作者) 1年前

这不是提示无效的用户名密码吗,检查密码吧

1年前 评论
donggan (楼主) 1年前

env里面的话检查下是否有特殊字符,用双引号包括起来,或转义下

1年前 评论

这个错误信息是 Redis 客户端库 Predis 抛出的异常,表示连接 Redis 数据库时使用的认证密码错误。错误信息 "AUTH failed: WRONGPASS invalid username-password pair" 意味着认证失败,因为提供的用户名和密码对不匹配。

这个错误可能有以下几种可能原因:

提供的 Redis 数据库密码不正确:请检查在连接 Redis 数据库时传递的密码是否与实际 Redis 数据库配置中设置的密码匹配。确认密码是否正确,并使用正确的密码进行连接。

Redis 数据库没有设置密码:如果 Redis 数据库没有设置密码,但在连接时尝试进行认证,会导致认证失败。请确保连接 Redis 数据库时不传递密码或传递空字符串。

Redis 数据库使用了用户名和密码认证:如果 Redis 数据库启用了用户名和密码认证,需要在连接时传递正确的用户名和密码。请确认连接时传递的用户名和密码是否与实际 Redis 数据库配置中设置的用户名和密码匹配。

解决这个错误的方法是确认连接 Redis 数据库时使用的密码和认证方式是否正确,并进行相应的修正。如果仍然无法解决问题,可以检查 Redis 数据库的配置文件和连接代码,确保密码和认证方式设置正确。如果问题仍然存在,请检查 Redis 数据库的状态和网络连接情况,确保 Redis 服务器正常运行并且可以通过网络连接访问。

1年前 评论
Imuyu 1年前
lddtime 1年前

应该是缓存问题,需要删除 bootstrap 里面 app/config.php 删除配置文件

1年前 评论

redis有设置密码吗?密码特殊吗?密码有空格吗?有空格这些php设置用双引号包裹

1年前 评论

应该是因为redis版本 6+版本需要设置用户名了

1年前 评论

运行配置缓存清理命令:php artisan config:clear
再次缓存配置:php artisan config:cache
不清理配置缓存,直接运行缓存配置命令也是可以的,会刷新。

1年前 评论
laravel_peng

我也碰到了,类似于你的报错:

file

报错相关文件路径如下,报错行数为 96 行:

# 路径
vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php

相关代码如下:

# 相关代码如下:
if (! empty($config['password'])) {
    if (isset($config['username']) && $config['username'] !== '' && is_string($config['password'])) {
        $client->auth([$config['username'], $config['password']]);
    } else {
        $client->auth($config['password']);
    }
}

百度了一下:参考链接

file

看一下 config/database.php 关于 redis 的相关配置:

file

我使用的 Redis 7 的版本。Laravel 框架的具体解决办法 .env 配置:

# 增加一个这个配置,但是等号后,不填写任何内容,会被识别为空字符串
# 但是如果不填写这个配置,会被识别成 null
REDIS_USERNAME=

居然好了,其实也很奇怪,识别成 null 和 “” 一样不会去验证 Redis 的 username , 但是就不知道为啥这个空字符串的可以。

限于我不能登录服务器查看,这个暂时排查到这里,估计有其它的原因。

1年前 评论
donggan (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!