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

Laravel配置Redis缓存报错:Name or service not known [tcp://redis:6379]求助

排查Laravel Redis连接报错:Name or service not known [tcp://redis:6379]

这个报错指向很明确:你的Laravel应用没使用你在.env里配置的localhost:6379,反而在尝试连接名为redis的主机。这是个很典型的配置类问题,咱们一步步来排查:

1. 先清掉Laravel的配置缓存

Laravel有个配置缓存机制,如果你之前运行过php artisan config:cache,之后修改.env的内容根本不会生效——因为应用会直接读缓存好的配置文件,不会重新加载.env。

解决步骤:

  • 执行命令清除配置缓存:
    php artisan config:clear
    
  • 顺带清掉路由缓存(虽然和这个问题无关,但有时能解决连带的配置加载问题):
    php artisan route:clear
    
  • 重启你的本地开发服务器(不管是Valet、Homestead还是内置的php artisan serve),确保新配置生效。

2. 检查Redis配置文件是否正确引用.env变量

打开config/database.php,找到Redis连接的配置块,确认host字段是从.env读取的,而不是硬写成了redis。

正确的配置应该是这样的:

'redis' => [
    'client' => env('REDIS_CLIENT', 'phpredis'),
    'default' => [
        'host' => env('REDIS_HOST', 'localhost'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => env('REDIS_DB', 0),
    ],
    // 其他连接配置...
],

如果你的host字段直接写死成了'redis',那不管.env里怎么配,应用都会去连这个主机名,自然会报错。改成上面的写法,让它优先读取.env的REDIS_HOST,默认 fallback到localhost。

3. 确认.env文件的配置项拼写无误

检查你的.env文件,确保Redis相关配置没有拼写错误:

REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=null
REDIS_DB=0

注意是REDIS_HOST,别写成REDIS_HOSTS这类错字;另外不要在等号前后加多余空格(比如REDIS_HOST= localhost会导致读取到带空格的主机名)。

4. 排查Docker环境残留配置(可选)

如果你之前用Docker部署过Laravel,可能配置文件里留了针对Docker的设置(比如把Redis主机设为redis,对应Docker Compose里的服务名)。但你现在是本地直接运行Redis,要确保没有这类残留配置覆盖了本地设置。

如果以上步骤都试过还是不行,可以额外做这些验证:

  • 重启本地Redis服务器,确认它确实在localhost:6379端口监听;
  • 用telnet localhost 6379或者redis-cli ping测试本地Redis的连通性,确认服务器正常运行;
  • 运行php artisan tinker,执行env('REDIS_HOST'),看看输出是不是localhost,确认.env变量被正确读取。

内容的提问来源于stack exchange,提问作者oajmi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:39:24