跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

phpenv自带Redis怎么开启 phpenv Redis使用教程

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

相关文章