必须先启用php redis扩展并启动redis服务端才能使用new redis()。需确认phpenv中php版本、nts/x64架构,下载匹配的redis.dll放入对应ext目录,修改该版本php.ini添加extension=php_redis.dll,再安装并运行redis服务(如微软版3.2.100),最后用127.0.0.1连接测试。

phpEnv 是 Windows 下轻量级 PHP 本地开发环境(类似 WAMP/XAMPP),但默认不集成 Redis 扩展,也不自带 Redis 服务。要让它真正支持 new Redis(),必须分两步走:先让 PHP 加载 redis 扩展,再确保有 Redis 服务端在运行——缺一不可。
确认 phpEnv 使用的 PHP 版本和架构
phpEnv 通常允许切换多个 PHP 版本(如 7.4、8.1、8.2),每个版本对应独立的 php.ini 和扩展目录。装错扩展会导致 PHP Warning: PHP Startup: Unable to load dynamic library 'redis' 或直接启动失败。
- 打开 phpEnv 控制面板 → 点击当前启用的 PHP 版本 → “phpinfo()” 查看页面
- 重点记下三行:
PHP Version(如8.2.15)、Thread Safety(必须是disabled,即 NTS)、Architecture(通常是x64) - 别信“PHP 8.x 通用版”,phpEnv 的 NTS 架构必须匹配;例如 PHP 8.2 NTS x64 要选
redis-5.3.7-8.2-nts-vs16-x64.zip,不是ts版
下载并启用 redis.dll 扩展
phpEnv 不走 PECL,也不改系统级 php.ini,它用的是自己维护的 PHP 安装副本,所以必须手动放 DLL 并修改对应版本的配置文件。
- 去 PECL Redis Windows 下载页,按上一步确认的版本筛选 ZIP 包(如
redis-5.3.7-8.2-nts-vs16-x64.zip) - 解压后取
php_redis.dll(注意:不需要php_igbinary.dll,除非你明确要用 igbinary 序列化) - 把它复制到 phpEnv 对应 PHP 版本的
ext目录下,路径类似:C:\phpEnv\php\php-8.2.15-Win32-vs16-x64\ext\ - 编辑该版本的
php.ini(不是系统 php.ini!是 phpEnv 自带的那个),在; Dynamic Extensions区域下方加一行:extension=php_redis.dll - 保存后,在 phpEnv 面板中重启 Apache 或 PHP-FPM —— 不重启,改了等于白改
启动 Redis 服务(Windows 原生方式)
phpEnv 本身不附带 Redis 服务端,你得单独部署一个能被本地 PHP 连上的 redis-server.exe。推荐用微软官方维护的 Windows 版本,稳定且无需编译。
- 下载地址:https://www.php.cn/link/d3d9022eea71cf2692909471bc947301(最新稳定版是
Redis-x64-3.2.100.msi) - 安装时勾选“Add Redis to PATH”和“Run Redis Server as a service”,这样开机自启、命令行可用
- 安装完立刻验证:
redis-cli ping→ 应返回PONG;如果报“拒绝访问”,说明服务没起来,去 Windows 服务管理器手动启动Redis服务 - PHP 连接时务必用
127.0.0.1(不是localhost),否则可能因 DNS 解析或 IPv6 回环卡住
验证是否真能用(别只看 phpinfo)
phpinfo() 显示 Redis 模块 ≠ 能真正执行命令。常见假成功:扩展加载了,但 $redis->connect() 报错或超时,本质是服务没通或参数不对。
- 写个测试脚本:
<?php $redis = new Redis(); try { $redis->connect('127.0.0.1', 6379, 2.0); // 显式设 2 秒超时,避免卡死 $redis->set('test_env', 'phpenv-redis-ok'); echo $redis->get('test_env'); } catch (Exception $e) { echo 'Error: ' . $e->getMessage(); } ?> - 如果输出
phpenv-redis-ok,说明全链路打通;如果报Connection refused,优先检查 Redis 服务状态;报Class 'Redis' not found,说明扩展根本没加载成功,回退查php.ini路径和extension_dir是否指向正确的ext目录 - 特别注意:phpEnv 的 Apache 和 CLI 可能用不同
php.ini,用php --ini查 CLI 配置,用phpinfo()查 Web 配置,两者都要对
最易被忽略的一点:phpEnv 切换 PHP 版本后,之前配好的 redis.dll 和 php.ini 修改不会自动同步到新版本目录里——每次切版本,都得重新复制 DLL、重新编辑对应版本的 php.ini。这不是 bug,是 phpEnv 的设计逻辑。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











