PHP版本和架构不匹配是加载失败主因,须用php -v、php -i | findstr "Thread Safe"及"Architecture"确认TS/NTS与x86/x64,下载对应ts-vsxx-x64/86的php_redis.dll,php.ini中仅写extension=redis,extension_dir须正确指向ext目录,Redis服务需单独安装启动并验证端口6379监听状态。

PHP版本和架构不匹配是加载失败的主因
XAMPP自带的PHP 8.0+默认是TS(Thread Safe)、x64或x86,不是看你的Windows系统位数,而是看php -i输出的Architecture和Thread Safe字段。选错DLL会导致php -m里没有redis、phpinfo()搜不到模块,甚至Apache直接崩溃。
必须执行以下三步确认真实环境:
-
php -v→ 确认主版本号(如8.0.30) -
php -i | findstr "Thread Safe"→enabled才是TS,disabled是NTS -
php -i | findstr "Architecture"→ 明确是x86还是x64
别从pecl.php.net主页下ZIP——那默认是NTS版;要去windows.php.net/pecl/releases/redis/找带ts和对应架构的包,例如redis-5.3.7-8.0-ts-vs16-x64.zip。解压后只取php_redis.dll,删掉.pdb文件。
php.ini里extension=redis写法有严格限制
扩展名不能带路径、不能带后缀,否则会报Module 'redis' already loaded或Invalid configuration directive。常见错误写法:extension=php_redis.dll、extension="C:\xampp\php\ext\php_redis.dll"。
正确写法只有一行,放在;extension=mysqli附近即可:
extension=redis
这个简写是PHP 8+支持的规范写法,硬写全名反而被识别为两个不同扩展。同时确认extension_dir指向正确:
extension_dir = "C:\xampp\php\ext"
路径末尾不能有斜杠,且该目录下必须存在php_redis.dll文件。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
Redis服务必须单独安装并启动
php_redis.dll只是让PHP能“说话”,但没“人听”——XAMPP不带Redis服务器。不启动redis-server,$redis->connect()必然报Connection refused或超时。
Windows开发推荐用Microsoft Archive的Windows port(仅限Win):
- 下载
redis-x64-*.zip(如7.2.x),解压到C:\redis - 管理员身份运行CMD,进目录后执行:
redis-server --service-install redis.windows.conf --loglevel verbose - 再执行:
redis-server --service-start - 验证:
redis-cli ping应返回PONG;若提示命令未找到,把C:\redis加进系统PATH
检查是否真在跑:netstat -ano | findstr :6379,能看到LISTENING状态的PID才算成功。
连接失败时优先排查端口和服务状态
即使phpinfo()显示redis已加载,$redis->connect('127.0.0.1', 6379)仍失败,大概率是服务没起来或端口被占。
典型现象和对应动作:
-
Connection refused→ Redis服务未运行,重试redis-server --service-start -
Operation timed out→ 防火墙拦截或redis.windows.conf里bind配置不对(确保含127.0.0.1) -
redis-cli找不到 → PATH没生效,重启CMD或手动用C:\redis\redis-cli.exe ping - PHP脚本卡住几秒才报错 →
redis-server进程存在但未监听,检查redis.windows.conf中port是否被改过、daemonize是否设为no(Windows下应为no)
真正容易被忽略的是:XAMPP控制面板里重启Apache,不等于重启Redis服务——两者完全独立,必须分别确认状态。


















