phpEnv中找不到redis扩展是因未手动放入匹配的php_redis.dll和php_igbinary.dll到对应PHP版本ext目录,且需在php.ini中正确添加两行extension配置并重启PHP服务。

phpEnv 里找不到 redis 扩展选项?先确认是否真缺扩展
phpEnv 是 Windows 下的 PHP 多版本集成环境,自带图形化界面管理扩展,但它的「扩展开关」只对预置的 DLL 文件生效。如果你在 phpEnv 界面里没看到 redis,大概率不是它不支持,而是你还没把匹配的 php_redis.dll 和 php_igbinary.dll 放进对应 PHP 版本的 ext/ 目录里。
phpEnv 不会自动下载或编译扩展,它只是读取已存在的 DLL 并生成启用配置。所以第一步永远是:查清当前激活的 PHP 版本和架构,再手动补全文件。
- 打开 phpEnv 控制面板 → 点击「PHP 版本」标签页 → 记下当前选中的版本(如
8.1.23)、线程安全(TS或NTS)、架构(x64) - 用命令行验证:执行
php -i | findstr "Thread Safety\|Architecture\|Compiler",结果必须和面板显示一致 - 找到该 PHP 版本的实际安装路径(通常形如
C:\phpenv\versions\8.1.23\),确认ext\目录存在且可写
下载 DLL 必须严格匹配 phpEnv 的 PHP 构建参数
phpEnv 使用的 PHP 二进制包大多由 windows.php.net 官方提供,编译器通常是 VS16(PHP 8.0–8.2)或 VS17(部分新版),不能靠猜。错一个参数,php -m 就看不到 redis,甚至启动时报「The specified module could not be found」。
- 访问 https://www.php.cn/link/7e1778994e19321c01d18786dc19e1f2,找文件名含你 PHP 主版本号的 ZIP 包,例如
php_redis-5.3.7-8.1-ts-vs16-x64.zip - 同时去 https://www.php.cn/link/ecdf4779a8c72e348171c5a7523c067e 下载同版本、同架构、同 TS/NTS 的
php_igbinary.dll(php_redis.dll依赖它,不装会报Class 'Redis' not found) - 解压后只取
php_igbinary.dll和php_redis.dll,丢进C:\phpenv\versions\8.1.23\ext\(路径以你实际版本为准)
phpEnv 界面启用前,得先手动改一次 php.ini
phpEnv 的「扩展管理」按钮本质是开关 extension= 行的注释,但它不会自动添加新扩展项。如果 php.ini 里压根没有 extension=php_igbinary.dll 这两行,点启用也没用。
立即学习“PHP免费学习笔记(深入)”;
- 用 phpEnv 面板点开「配置文件」→ 「php.ini」,定位到
; Dynamic Extensions区域下方 - 插入两行(顺序不能错):
extension=php_igbinary.dll<br>extension=php_redis.dll
- 保存后,在 phpEnv 里重启 PHP 服务(不是重启面板,是点「服务控制」里的「重启 PHP」)
- 再进「扩展管理」,就能看到 redis 已勾选并变灰——此时才是真生效
测试失败?重点检查这三个地方
即使 phpinfo() 显示了 redis 模块,new Redis() 仍可能报错,常见卡点不在扩展本身,而在运行时依赖或服务连接。
-
PHP Fatal error: Uncaught Error: Class 'Redis' not found:90% 是php_igbinary.dll没放对位置,或没写进 php.ini;检查php -m | findstr redis是否输出redis -
Connection refused或php_network_getaddresses: getaddrinfo failed:说明 Redis 服务根本没跑,phpEnv 不附带 Redis,你得单独下载 MicrosoftArchive/redis 并运行redis-server.exe redis.windows.conf - 扩展启用后 Apache/Nginx 报 500:可能是 DLL 与 PHP 架构不匹配(比如 x64 PHP 加了 x86 DLL),用
depends.exe检查php_redis.dll依赖的MSVCP140.dll是否缺失
php_igbinary.dll 的强制依赖和 Redis 服务的独立部署——这两步不做,界面上开了十次 redis 也白搭。



















