必须安装php_redis.dll扩展才能连接redis;xampp需手动配置,且php版本、ts/nts、架构、vc编译器及api版本必须与dll完全匹配,否则报“unable to load dynamic library”错误。

PHP 要连接 Redis,必须装 php_redis.dll 扩展,不是装个 Redis 服务就完事的;XAMPP 自带的 PHP 不含该扩展,得手动配,且版本错一个字符(比如 TS/NTS、x86/x64、API 版本)就会报 PHP Startup: Unable to load dynamic library 'php_redis.dll'。
查清你的 PHP 架构和编译环境
打开 phpinfo() 页面,重点看这三行:
-
Architecture:值是x86还是x64—— 决定你该下哪个位数的 DLL,跟 Windows 系统位数无关 -
Thread Safety:enabled对应TS(Thread Safe),disabled对应NTS -
PHP Extension Build:比如API20190902,TS,VC15,其中VC15表示用 Visual C++ 2017 编译,API20190902是 PHP 内核 API 版本
这些信息必须和下载的 DLL 完全匹配。例如 PHP 7.4 x86 TS VC15,就得下 php_redis-5.3.7-7.4-ts-vc15-x86.zip 这类命名的包,不能选错后缀。
下载、放文件、改 php.ini 的关键顺序
从 windows.php.net/pecl/releases/redis 下对应版本 ZIP 包,解压后:
- 只取
php_redis.dll(.pdb文件不用放) - 拷到 XAMPP 的 PHP 扩展目录,通常是
C:\xampp\php\ext\ - 编辑
C:\xampp\php\php.ini,在;extension=openssl之类已有 extension 后面加一行:extension=php_redis.dll - 如果同时用
igbinary(提升序列化性能),必须先加载它:extension=php_igbinary.dll在php_redis.dll前面
别漏掉重启 Apache —— 改了 php.ini 不重启,phpinfo() 里永远看不到 Redis 模块。
验证扩展是否真生效,而不是“看起来成功”
运行以下代码,不光看 phpinfo() 有 Redis 模块,更要实测能否实例化:
$redis = new Redis(); var_dump($redis instanceof Redis); // 应输出 bool(true)
如果报 Class 'Redis' not found,说明扩展没加载成功,常见原因:
-
php.ini路径错了(XAMPP 可能读的是C:\xampp\php\php.ini,但你改了另一个) - Apache 和 CLI 用的不是同一个
php.ini(用php --ini查 CLI 路径,phpinfo()查 Web 路径) - 扩展依赖
php_igbinary.dll却没提前加载,或两个 DLL 的 VC 版本不一致(比如一个 VC15、一个 VC14)
Windows 下 DLL 加载失败通常静默忽略,不会报错到页面,只能靠 phpinfo() 或 get_loaded_extensions() 确认。
Redis 服务端和客户端扩展是两回事,别混在一起排查
即使 redis-server --service-start 成功、redis-cli ping 返回 PONG,PHP 仍连不上,大概率是扩展问题,不是服务端问题。反过来,扩展装好了但 new Redis() 报连接拒绝,才该查服务端:
- 确认
redis-server.exe进程在跑(任务管理器看) - 检查
redis.windows.conf中port是不是 6379,有没有被占用(netstat -ano | findstr :6379) - PHP 里
$redis->connect('127.0.0.1', 6379)的 IP 和端口要和服务端一致
最易忽略的一点:XAMPP 控制面板里 Apache 的“Config → PHP Settings”有时会打开错误的 php.ini(比如打开了 php.ini-development),务必确认你编辑的是 Apache 实际加载的那个文件。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











