phpEnv不内置Redis扩展和服务,需手动安装匹配NTS版本的php_redis.dll、启用扩展并单独部署Redis服务,否则会出现Class 'Redis' not found或Connection refused错误。

phpEnv 本身不内置 Redis 扩展,也不提供 Redis 服务;它只是 Windows 下的 PHP 多版本环境管理工具。要让 PHP 能用 redis 扩展连接 Redis,必须手动安装并启用扩展,同时单独部署 Redis 服务(比如用 Redis-Windows 或 WSL)。直接勾选“启用 Redis”在 phpEnv 界面里是无效的。
确认 PHP 版本与线程安全(TS/NTS)匹配
phpEnv 默认使用非线程安全(NTS)版 PHP,而多数预编译的 php_redis.dll 是为 TS 版本编译的——装错会导致 Apache 启动失败或 PHP Warning: PHP Startup: Unable to load dynamic library 'redis' 错误。
- 进入 phpEnv 安装目录下的
php\php_x.x.x\php.ini,查找thread_safety =行,确认值为0(即 NTS) - 下载对应版本的 NTS 扩展:推荐从 pecl.php.net/redis 获取,例如
php_redis-5.3.7-7.4-nts-vs16-x64.zip - 解压后把
php_redis.dll放入php\php_x.x.x\ext\目录 - 在
php.ini末尾添加:extension=php_redis.dll
启用扩展后验证是否加载成功
仅写入 extension= 不代表生效——常见遗漏点是没重启 phpEnv 的 Web 服务,或用了错误的 php.ini 文件。
- 在 phpEnv 主界面点击「PHP 设置」→「编辑 php.ini」,确保你修改的是当前启用 PHP 版本所用的配置文件(路径显示在窗口标题栏)
- 改完保存后,必须点击 phpEnv 工具栏的「重启 Apache」或「重启 Nginx」
- 新建
test.php,内容为<?php print_r(get_loaded_extensions()); ?>,访问后搜索是否有redis - 或运行命令:
php -m | findstr redis(Windows CMD),有输出即表示 CLI 模式也已加载
单独启动 Redis 服务(Windows 常见方案)
phpEnv 不附带 Redis 服务端,RedisException: Connection refused 这类错误几乎全是因 Redis 进程未运行导致。
立即学习“PHP免费学习笔记(深入)”;
- 推荐使用 Microsoft 官方维护的 Redis-Windows(注意:仅支持到 3.2,但足够本地开发)
- 解压后以管理员身份运行:
redis-server.exe redis.windows.conf(保持窗口打开,或安装为系统服务) - 测试连通性:
redis-cli.exe ping→ 应返回PONG - PHP 中连接示例:
$redis = new Redis(); $redis->connect('127.0.0.1', 6379); - 如需开机自启 Redis 服务,可用
redis-server --service-install redis.windows.conf --loglevel verbose
扩展启用但 connect() 失败的典型原因
即使 phpinfo() 显示 redis 扩展已加载,new Redis()->connect() 仍可能失败——这和扩展无关,而是网络或权限问题。
- 检查 Redis 是否监听
127.0.0.1:6379(默认),而非127.0.0.1:6380或::1(IPv6) - 确认
redis.windows.conf中bind 127.0.0.1未被注释,且protected-mode yes时需设密码或关闭(开发环境可临时设protected-mode no) - Windows 防火墙可能拦截 6379 端口,临时关闭防火墙测试一次
- Apache/Nginx 运行账户(通常是 SYSTEM)需有权限访问 Redis 进程,避免用普通用户启动 Redis 后被隔离
最容易被忽略的一点:phpEnv 切换 PHP 版本时,php.ini 和扩展目录自动切换,但你手动放进 ext/ 的 php_redis.dll 不会自动复制到新版本目录——每次换 PHP 版本,都得重新放 DLL 并确认 php.ini 路径是否正确。



















