返回

解决 Laravel 中 \

php

Laravel Redis 连接错误:In PhpRedisConnector.php 行 161:连接被拒绝

在使用 Laravel 配置 Redis 连接时,你可能遇到 "In PhpRedisConnector.php 行 161:连接被拒绝" 错误。这篇文章将引导你逐步解决这个问题,并提供额外的提示和故障排除技巧。

诊断和解决步骤

1. 确认 Redis 正在运行

首先,使用 docker ps 命令检查 Redis 是否正在运行。输出中应该显示一个名为 "redis" 的容器正在运行。

2. 检查 Redis 连接配置

在你的 .env 文件中,确保 Redis 连接配置正确:

  • REDIS_HOST :Redis 服务器的 IP 地址或主机名(默认:127.0.0.1)
  • REDIS_PORT :Redis 服务器的端口(默认:6379)
  • REDIS_PASSWORD :如果 Redis 设置了密码,则为该密码(默认:null)

3. 重启 PHP-FPM

进行任何更改后,需要重启 PHP-FPM 以使更改生效:

sudo systemctl restart php8.1-fpm.service

4. 检查 PHP Redis 扩展

确保 PHP Redis 扩展已正确安装和启用:

php -m | grep redis

输出中应该包含 "redis"。

5. 检查 Laravel Redis 配置

config/database.php 文件中,确保 Laravel Redis 配置正确:

  • client : 默认使用 "predis" 客户端
  • options : 自定义选项(例如,前缀)
  • default : 连接详细信息,包括 hostpasswordportdatabase

6. 尝试手动连接 Redis

使用以下代码尝试手动连接 Redis:

use Illuminate\Support\Facades\Redis;

$redis = Redis::connection();

if ($redis->ping()) {
    echo "Conexión Exitosa";
}

如果连接成功,你应该在控制台中看到 "Conexión Exitosa"。

7. 排除防火墙问题

如果上述步骤都没有解决问题,请检查你的防火墙是否阻止了对 Redis 服务器的连接。

其他提示

  • 确保 Redis 服务器使用的是正确的端口。
  • 确保 Redis 服务器没有被禁用。
  • 如果使用 Docker,确保 Redis 容器和 PHP 容器可以相互通信。

常见问题解答

  1. 为什么我会收到 "In PhpRedisConnector.php 行 161:连接被拒绝" 错误?

    • 连接被拒绝表明 Laravel 无法连接到 Redis 服务器。
  2. 如何检查 Redis 是否正在运行?

    • 使用 docker ps 命令检查是否存在一个名为 "redis" 的容器正在运行。
  3. 我应该在哪些文件中检查 Redis 配置?

    • 检查 .env 文件以了解连接配置,检查 config/database.php 文件以了解 Laravel Redis 配置。
  4. 我如何手动连接到 Redis?

    • 使用 Illuminate\Support\Facades\Redis 类中的 connection() 方法。
  5. 我应该如何排除防火墙问题?

    • 确保防火墙允许对 Redis 服务器端口的传入连接。