phpEnv 下需手动配置 Redis 扩展:先用 phpenv which php 和 php -v 确认 PHP 版本及架构,再从官方 PECL 下载匹配的 php_redis.dll,放入对应版本 ext 目录,在该版本 php.ini 中启用 extension=php_redis.dll 并验证 CLI 与 Web 环境均生效。

phpEnv 是 Windows 下的 PHP 多版本环境管理工具,它本身不自带 Redis 扩展,也不能直接“一键开启”——必须手动匹配 DLL、配置 php.ini 并确保与当前激活的 PHP 版本完全一致。否则 new Redis() 会报 Class 'Redis' not found,或 PHP 启动失败。
怎么确认当前 phpEnv 使用的是哪个 PHP 版本和架构
phpEnv 切换版本后,实际生效的是它指向的 PHP 安装目录。你得进命令行查清楚,不能凭感觉:
- 运行
phpenv which php查看当前 PHP 可执行文件路径(比如C:\phpenv\versions\8.1.23\) - 进入该目录,执行
php -v确认主版本(如 8.1.23) - 执行
php -i | findstr "Thread Safety\Architecture",确认是enabled(TS)还是disabled(NTS),以及是x64还是x86 - 打开该 PHP 目录下的
php.ini,检查extension_dir指向是否正确(如ext子目录存在且可写)
去哪下载匹配的 php_redis.dll
Windows 下唯一靠谱来源是官方 PECL 发布页,不是 GitHub、不是第三方打包站。错一个参数(版本/TS/NTS/架构)就白忙:
- 访问 https://www.php.cn/link/7e1778994e19321c01d18786dc19e1f2
- 找最新稳定版 ZIP 包,名字含完整标识:例如
redis-5.3.7-8.1-ts-vs16-x64.zip—— 其中8.1对应 PHP 主版本,ts表示线程安全,x64是架构 - 解压后只取
php_redis.dll(不用.pdb或其他文件) - 把它放进
phpenv\versions\X.Y.Z\ext\目录下(注意不是系统 PHP 目录,也不是 Apache 的 ext)
php.ini 配置必须写的三件事
phpEnv 管理多个版本,每个版本有独立的 php.ini,改错文件等于没改:
立即学习“PHP免费学习笔记(深入)”;
- 在对应版本的
php.ini里,找到;extension=区域,在末尾添加:extension=php_redis.dll - 如果同时用
igbinary(常见于序列化优化),必须先加载它:extension=php_igbinary.dll放在php_redis.dll前面,否则扩展初始化失败 - 删掉
extension_dir行前面的分号,并确保路径是相对或绝对正确的,例如:extension_dir = "ext"或extension_dir = "C:\phpenv\versions\8.1.23\ext"
验证是否真生效,别只看 phpinfo()
很多用户看到 phpinfo() 页面出现 Redis 模块就以为成了,但实际代码仍报错——因为 CLI 和 Web SAPI 可能加载不同配置:
- 在命令行运行
php -m | findstr redis,有输出才说明 CLI 模式加载成功 - 创建一个
test.php,内容为<?php new Redis(); echo "OK"; ?>,用 phpEnv 启动的 Web 服务(如内置服务器或配合 Apache/Nginx)访问它 - 如果报
Class 'Redis' not found,优先检查php --ini输出的配置文件路径,确认你编辑的是那个文件 - 如果 PHP 启动直接失败(如 Apache 无法启动),说明 DLL 版本不兼容,立刻删掉
extension=行并换包重试
最常被跳过的一步:phpEnv 切换版本后,必须重启你的 Web 服务(Apache/Nginx)或 PHP 内置服务器;CLI 下也要新开终端,否则旧进程还在用老配置。DLL 文件名、php.ini 路径、TS/NTS 标识,三者错一个,扩展就形同虚设。



















