phpenv不自带Redis,需手动安装Redis服务并为当前PHP版本用pecl install redis安装扩展,配置对应php.ini启用,且确保Redis服务已启动。
php
env 本身不自带 Redis,也不会自动安装或启用 Redis 扩展。它只是一个 PHP 版本管理工具,和 Redis 服务、PHP 的
扩展完全无关。你看到的“phpenv 自带 Redis”是常见误解——实际需要你手动安装 Redis 服务 + 手动为当前 phpenv 管理的 PHP 版本编译/启用
扩展。
phpenv 下怎么装
redis
扩展(Linux/macOS)
phpenv 不提供扩展安装能力,必须用
配合当前激活的 PHP 版本执行安装:
先确认当前使用的 PHP 版本:
,比如输出
确保已安装 PHP 开发头文件:
(Ubuntu)或
(macOS)
用当前版本的
安装:
(注意:必须在目标版本环境下运行)
安装成功后,
会提示类似
的配置行,复制它
找到当前 PHP 版本的
路径:
→ 查看 “Loaded Configuration File”,编辑该文件,末尾添加
重启 PHP-FPM 或 Web 服务器(如
),再运行
验证
为什么 phpinfo() 看不到 redis 模块?
最常见原因是:扩展被加到了错误的
文件里。phpenv 切换版本时,
和
显示的路径可能不同——CLI 和 FPM 使用的配置文件往往不是同一个。
Web 请求中
读的是 FPM 或 Apache 加载的
,不是 CLI 的
运行
(CLI)和在
页面里搜索 “Loaded Configuration File” 对比路径
如果两者不一致,需把
同时加到两个
中,或统一用
触发配置同步(部分插件支持)
另一个高频坑:扩展名写错,比如写成
(Linux 下应为
,Windows 才是
)
Redis 服务没启动,连不上怎么办
phpenv 不负责管理 Redis 服务进程。即使扩展装好了,
仍会报
或超时。
立即学习
“
PHP免费学习笔记(深入)
”;
Linux:用包管理器安装服务端:
,然后
macOS:
验证服务是否跑起来:
应返回
;检查端口:
若改过
(比如加了
或
),PHP 连接代码里必须同步传参:
真正卡住人的从来不是“怎么写 set/get”,而是扩展没装对版本、
加错位置、Redis 服务压根没跑——这三个点漏掉任意一个,
就只是个空对象,连异常都不会抛。
redisredispeclphpenv version8.2.12sudo apt install php8.2-devbrew install php@8.2peclphpenv local 8.2.12 && pecl install redispeclextension=redis.sophp.iniphp --iniextension=redis.sosudo systemctl restart php8.2-fpmphp -m | grep redisphp.iniphp --iniphp -i | grep "Loaded Configuration File"phpinfo()php.iniphp -r "echo php_ini_loaded_file();"phpinfo()extension=redis.sophp.iniphpenv rehashextension=php_redis.soredis.sophp_redis.dll$redis->connect()Connection refusedsudo apt install redis-serversudo systemctl start redis-serverbrew install redis && brew services start redisredis-cli pingPONGss -tlnp | grep :6379redis.confbindrequirepass$redis->connect('127.0.0.1', 6379); $redis->auth('mypass');php.ininew Redis()