Mac通过pecl安装Redis后提示Class 'Redis'未找到,求解决方案
你遇到的核心问题是Redis扩展虽安装成功,但未被当前使用的PHP版本正确加载,下面是一步步的排查和解决方法:
1. 确认命令行使用的PHP版本是否为php@7.2
Mac系统可能自带PHP,或者你安装了多个PHP版本,导致命令行调用的不是brew安装的php@7.2。先执行以下命令查看当前PHP版本:
php -v
如果输出版本不是7.2.31(你安装的php@7.2版本),需要把brew的php@7.2路径加到环境变量最前面。编辑你的~/.bash_profile或~/.zshrc(取决于你用的shell),添加:
export PATH="/usr/local/opt/php@7.2/bin:$PATH" export PATH="/usr/local/opt/php@7.2/sbin:$PATH"
保存后执行source ~/.bash_profile或source ~/.zshrc生效,再重新执行php -v确认版本正确。
2. 检查PHP加载的php.ini文件路径
执行以下命令查看当前PHP使用的配置文件:
php --ini
重点看Loaded Configuration File这一行,确认它指向brew php@7.2的配置文件(通常路径是/usr/local/etc/php/7.2/php.ini或/usr/local/Cellar/php@7.2/7.2.31/etc/php.ini)。
如果加载的是系统自带的/etc/php.ini,说明pecl把扩展配置写到了错误的文件里,需要手动修正。
3. 确保Redis扩展已在正确的php.ini中启用
打开步骤2中找到的php.ini文件,搜索extension=redis,如果没有找到,添加以下内容:
extension="redis.so"
或者直接使用安装时显示的完整扩展路径:
extension="/usr/local/Cellar/php@7.2/7.2.31/pecl/20170718/redis.so"
另外,brew的PHP通常会加载conf.d目录下的配置文件,你也可以在/usr/local/etc/php/7.2/conf.d目录下创建一个redis.ini文件,内容同样是上面的扩展配置,这样更符合brew的配置规范。
4. 重启PHP服务并验证扩展是否加载
执行重启命令:
brew services restart php@7.2
然后执行以下命令查看已加载的扩展:
php -m
如果输出列表中有redis,说明扩展加载成功,再执行你的测试命令:
php -r "if (new Redis() == true){ echo \"\r\n OK \r\n\"; }"
此时应该能正常输出OK了。
5. 解决Laravel中的问题
Laravel无法找到Redis类通常也是因为它使用的PHP版本和你配置的不一致:
- 如果你用Valet管理本地环境,执行
valet use php@7.2切换到对应PHP版本,然后重启Valet:valet restart - 确认Laravel的
config/database.php中的Redis配置正确(核心还是扩展加载问题,只要命令行PHP能正常使用Redis,Laravel配置无误就没问题)
内容的提问来源于stack exchange,提问作者sveti petar

