Laravel 5.4 使用 Predis 报密码错误的问题

今天架了个 Redis 服务用来做 APP 后台数据缓存,用了 Laravel 推荐的 Predis 做为操作客户端,但一直报错:

`AUTH` failed: ERR Client sent AUTH, but no password is set [tcp://127.0.0.1:6379]

但是我并没有设置密码啊,最后找出来是 Predis 的新版本设置密码的地方已经改了,但是 Laravel 还没有修正过来。

找到 Laravel 中设置 Redis 连接信息的 config/database.php 文件,定位到 Redis 配置那里:

    'redis' => [
        'client' => 'predis',
        'default' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,
        ],
    ],

实际上应该修改为以下方式传递密码(外面多套了一层parameters):

    'redis' => [
        'client' => 'predis',
        'default' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,
            'parameters'=>[
                'password'=>env('REDIS_PASSWORD', '')
            ]
        ],

    ],

想不到吧?其实我也没搞清楚 Predis 为什么要这样改动,但问题解决了就好。

你可能感兴趣的:(Laravel 5.4 使用 Predis 报密码错误的问题)