redis-cli命令不存在说明Redis服务端未安装,与PHP的redis扩展无关;Windows下需手动下载MSOpenTech版Redis,解压后将路径加入系统PATH,并确保PHP连接时使用127.0.0.1而非localhost。

redis-cli 命令不存在,说明 Redis 服务端根本没装
很多人以为“PHP 装了 redis 扩展”就等于“Redis 能用了”,其实完全两回事。redis-cli 是 Redis 服务端自带的命令行工具,和 PHP 的 php_redis.dll 或 redis.so 没半点关系。phpEnv 是环境集成包,它只管 PHP 及其扩展,不自动附带 Redis 服务端。
- 运行
redis-cli --version报command not found,直接证明系统里压根没装 Redis 二进制文件 - phpEnv 自带的“Redis 支持”仅指预编译好
php_redis.dll并配好了extension=php_redis.dll,不代表服务端已部署 - Windows 下 phpEnv 通常不集成
redis-server.exe和redis-cli.exe,得手动补上
Windows 下手动补全 redis-cli(以 phpEnv + Win10 为例)
别去编译源码,直接下官方 Windows 兼容版最省事。微软官方已停止维护,但 MSOpenTech 存档版仍稳定可用。
- 去 https://www.php.cn/link/d3d9022eea71cf2692909471bc947301 下载最新
Redis-x64-*.zip(如Redis-x64-3.2.100.zip) - 解压到固定路径,比如
C:\redis,里面应有redis-server.exe和redis-cli.exe - 把
C:\redis加进系统PATH:控制面板 → 系统 → 高级系统设置 → 环境变量 → 编辑Path→ 新增该路径 - 新开命令行,执行
redis-cli --version和redis-server --version,都出版本号才算到位
phpEnv 中 PHP 连 Redis 时 localhost 不通?改用 127.0.0.1
即使 redis-cli -h localhost -p 6379 ping 成功,PHP 里写 $redis->connect('localhost', 6379) 仍可能报 Connection refused。这不是 bug,是 Windows 下 localhost 默认解析为 IPv6 地址 ::1,而 Redis 默认只监听 127.0.0.1(IPv4)。
- 检查
redis.windows.conf里的bind行:必须包含127.0.0.1,不能只有localhost或留空 - PHP 代码中一律用
$redis->connect('127.0.0.1', 6379),避开 DNS 解析歧义 - 如果还连不上,临时关掉
protected-mode yes(仅测试环境),或设requirepass yourpass并在 PHP 中加$redis->auth('yourpass')
php -m 显示 redis,但 phpinfo() 不显示?查 ini 加载路径是否一致
php -m | grep redis 成功只代表 CLI 模式加载了扩展;phpinfo() 看的是 Web SAPI(如 Apache 或 Nginx 的 PHP-FPM)用的 ini 文件,两者常不一致。
立即学习“PHP免费学习笔记(深入)”;
- 运行
php --ini查 CLI 加载的 ini 路径;在浏览器打开phpinfo()页面,搜索Loaded Configuration File,看路径是否相同 - 若不同,把
extension=php_redis.dll这行复制到 Web 模式实际加载的那个php.ini里(常见于phpEnv\php\php.ini或phpEnv\apache\conf\php.ini) - Windows 下注意扩展名是
php_redis.dll,不是redis.dll或redis.so;且extension_dir必须指向正确的ext目录
redis-cli 就不会凭空出现,new Redis() 就会静默失败。



















