在 Ubuntu 上 PHP 连不上 Redis,常见原因有几类:Redis 没起、配置不对、PHP 扩展没装、网络/权限问题。下面按排查顺序给你说明。
systemctl status redis
# 或
redis-cli ping
应返回:
PONG
如果没运行:
sudo systemctl start redis
sudo systemctl enable redis
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 -m | grep redis
如果没有结果:
sudo apt install php-redis
# 或
sudo apt install php8.1-redis
安装后重启 Web 服务:
sudo systemctl restart apache2
# 或
sudo systemctl restart php8.1-fpm
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('test', 'hello');
echo $redis->get('test');
常见错误:
new Redis() 但没装扩展localhost 有时走 socket)redis-cli config get requirepass
如果不为空,PHP 需要:
$redis->auth('你的密码');
sudo ufw status
如果是远程连接,需要放行:
sudo ufw allow 6379
127.0.0.1host.docker.internal 或容器名把 PHP 报错贴出来,比如:
Class 'Redis' not found → 没装扩展Connection refused → Redis 没起 / bind 不对Timeout → 防火墙 / 网络问题如果你愿意,可以把具体报错信息 + PHP 版本 + 是否 Docker发我,我可以直接帮你定位。