You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中Redis连接被拒绝(Connection refused)问题排查求助

Laravel Redis连接被拒绝(Connection refused)问题排查方案

以下是针对你遇到的问题的具体排查步骤:

1. 检查Docker Redis的端口映射配置

你在容器内部能正常ping通Redis,但主机的Laravel无法连接,大概率是容器端口未映射到主机:

  • 查看Redis容器的运行状态:
    docker ps
    
    检查PORTS列是否有0.0.0.0:6379->6379/tcp或127.0.0.1:6379->6379/tcp的映射。
  • 如果没有端口映射,重新启动Redis容器并添加端口映射参数:
    docker run -d -p 6379:6379 --name local-redis redis
    
    或者在docker-compose.yml中配置:
    services:
      redis:
        image: redis
        ports:
          - "6379:6379"
        # 其他配置
    

2. 确认Redis容器的绑定地址

默认Redis可能只绑定容器内部的127.0.0.1,导致主机无法通过端口映射访问:

  • 启动Redis时添加--bind 0.0.0.0参数,允许所有IP访问:
    docker run -d -p 6379:6379 --name local-redis redis --bind 0.0.0.0
    
  • 或者自定义Redis配置文件,将bind 127.0.0.1改为bind 0.0.0.0,再挂载到容器中。

3. 验证Laravel的Redis驱动配置

确保Laravel使用的是你安装的PhpRedis扩展,而非Predis:

  • 打开config/database.php,找到Redis配置段:
    'redis' => [
        'client' => env('REDIS_CLIENT', 'phpredis'), // 确保这里是phpredis
        'default' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => env('REDIS_DB', 0),
        ],
    ],
    
  • 同时确认.env中没有设置REDIS_CLIENT=predis,如果有则改为REDIS_CLIENT=phpredis。

4. 检查主机防火墙/SELinux限制

主机的防火墙或SELinux可能阻止了PHP访问6379端口:

  • 临时关闭防火墙测试(以ufw为例):
    sudo ufw disable
    
    或者开放6379端口:
    sudo ufw allow 6379/tcp
    
  • 临时关闭SELinux测试:
    sudo setenforce 0
    
    如果测试通过,再配置SELinux允许PHP连接Redis端口。

5. 确认运行Artisan命令的PHP版本

你重启了php8.1-fpm,但运行Artisan的PHP版本可能不是8.1:

  • 检查当前PHP版本:
    php -v
    
  • 如果不是8.1,指定版本运行命令:
    php8.1 artisan custom:test_redis
    

6. 额外验证:直接用PHP脚本测试Redis连接

创建一个简单的PHP脚本(比如test-redis.php),排除Laravel框架的影响:

<?php
$redis = new Redis();
try {
    $redis->connect('127.0.0.1', 6379);
    echo "Redis连接成功";
    $redis->close();
} catch (Exception $e) {
    echo "连接失败:" . $e->getMessage();
}

运行脚本:

php test-redis.php

如果这个脚本也报错,说明问题出在PHP与Redis的连接层面,而非Laravel配置。


内容的提问来源于stack exchange,提问作者Jovany González

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:57:34