必须严格匹配xampp的php版本、ts/nts线程安全模式及x86/x64架构,否则扩展加载失败或apache启动异常;需用php -v、php -i确认三要素,下载对应ts-vsxx-x64/86的php_redis.dll,php.ini中仅写extension=redis,且redis服务须单独安装并验证连接。

确认 PHP 架构与 redis.dll 是否严格匹配
XAMPP 的 PHP 是 TS(Thread Safe)版本,且多数为 x86 或 x64 架构——这和你操作系统位数无关,只取决于 XAMPP 安装包本身。错配会导致 PHP Warning: Module 'redis' already loaded 或 Apache 启动失败,甚至静默失效。
执行以下命令确认关键信息:
-
php -v查看 PHP 版本(如8.2.12) -
php -i | findstr "Thread Safe"(Windows)或php -i | grep "Thread Safe"(macOS/Linux)确认是否为enabled -
php -i | findstr "Architecture"确认是x86还是x64
常见错误:从 pecl.php.net 下载的 DLL 默认是 NTS;而 XAMPP 几乎全用 TS。务必去 windows.php.net/pecl/releases/redis/ 找带 ts 和对应架构(如 vs16-x64)的 zip 包,解压后只取 php_redis.dll。
正确启用 extension=redis 而非 extension=php_redis.dll
PHP 8+ 已支持省略前缀与后缀,写成 extension=php_redis.dll 会触发 Invalid configuration directive 错误,Apache 直接拒绝启动。
编辑 C:\xampp\php\php.ini(Windows)或 /Applications/XAMPP/xamppfiles/etc/php.ini(macOS),在已有扩展附近添加一行:
extension=redis
注意两点:
- 不要加
.dll或.so后缀 - 不要用绝对路径(如
extension="C:\xampp\php\ext\php_redis.dll")
若同时使用 igbinary,必须把 extension=igbinary 放在 extension=redis 之前,否则 redis 扩展初始化失败。
Redis 服务需单独安装,XAMPP 不自带
下载 MicrosoftArchive/redis 的 Windows port(仅开发用),或 macOS 上用 brew install redis。别指望 XAMPP 控制面板里能启 Redis——它根本没集成。
Windows 下以管理员身份运行:
redis-server --service-install redis.windows.conf --loglevel verbose<br>redis-server --service-start
验证服务是否跑起来:
- 检查端口:
netstat -ano | findstr :6379 - 连客户端:
redis-cli ping应返回PONG - 若提示“不是内部或外部命令”,把
redis-cli.exe所在目录加进系统PATH
macOS 用户注意:redis-server 默认前台运行;加 daemonize yes 到 /usr/local/etc/redis.conf 才能后台常驻。
测试扩展加载 + 连通性缺一不可
仅看到 phpinfo() 里有 Redis 模块不等于能用。很多问题出在连接层:扩展加载成功,但 Redis 服务没启、端口被占、或防火墙拦截。
新建 C:\xampp\htdocs\test-redis.php:
<?php <br>var_dump(extension_loaded('redis')); // 应输出 bool(true)<br>$r = new Redis();<br>var_dump($r->connect('127.0.0.1', 6379)); // 应输出 bool(true)<br>echo $r->ping() ?: 'failed'; // 应输出 PONG<br>?>
最容易被忽略的是:Windows 下服务默认监听 127.0.0.1,但某些新版 Redis 配置绑定了 ::1(IPv6 localhost),导致 PHP 用 IPv4 connect 失败。此时要改 redis.windows.conf 中的 bind 行为 bind 127.0.0.1 ::1 或仅留 127.0.0.1。











