温馨提示×

ubuntu php为何连不上redis

小樊
43
2026-10-04 10:09:44
栏目: 云计算

在 Ubuntu 上 PHP 连不上 Redis,常见原因有几类:Redis 没起、配置不对、PHP 扩展没装、网络/权限问题。下面按排查顺序给你说明。


一、Redis 本身是否正常

1. 检查 Redis 是否运行

systemctl status redis
# 或
redis-cli ping

应返回:

PONG

如果没运行:

sudo systemctl start redis
sudo systemctl enable redis

二、Redis 监听地址问题(非常常见)

2. 检查 Redis 监听 IP

redis-cli config get bind

默认通常是:

127.0.0.1

如果你 PHP 在另一台机器或Docker 容器里,需要改:

sudo nano /etc/redis/redis.conf

修改:

bind 0.0.0.0
# 或
bind 127.0.0.1 ::1

然后重启:

sudo systemctl restart redis

三、PHP Redis 扩展没装(最常见原因)

3. 检查 PHP 是否装了 redis 扩展

php -m | grep redis

如果没有结果:

Ubuntu + PHP(以 php8.1 为例)

sudo apt install php-redis
# 或
sudo apt install php8.1-redis

安装后重启 Web 服务:

sudo systemctl restart apache2
# 或
sudo systemctl restart php8.1-fpm

四、PHP 连接代码是否正确

4. 正确连接方式

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('test', 'hello');
echo $redis->get('test');

常见错误:

  • 用了 new Redis() 但没装扩展
  • host 写错(如 localhost 有时走 socket)
  • 端口写错(默认 6379)

五、Redis 有密码但未认证

5. 检查密码

redis-cli config get requirepass

如果不为空,PHP 需要:

$redis->auth('你的密码');

六、防火墙 / SELinux / Docker 问题

6. 防火墙

sudo ufw status

如果是远程连接,需要放行:

sudo ufw allow 6379

Docker 场景

  • PHP 容器不能连 127.0.0.1
  • 要用 host.docker.internal 或容器名

七、看错误是最快的

把 PHP 报错贴出来,比如:

  • Class 'Redis' not found → 没装扩展
  • Connection refused → Redis 没起 / bind 不对
  • Timeout → 防火墙 / 网络问题

如果你愿意,可以把具体报错信息 + PHP 版本 + 是否 Docker发我,我可以直接帮你定位。

0 踩