美文网首页
Macbook安装redis环境与 'redis.so' 丢失问

Macbook安装redis环境与 'redis.so' 丢失问

作者: 轻书铭 | 来源:发表于2024-01-29 15:53 被阅读0次

电脑是13寸17年时候的macbook,系统升级了N个版本,最近尝试在本地安装redis环境供php开发。
安装redis环境,除了安装redis本身还需要安装redis扩展phpredisComposer依赖库predis

一、安装redis

1、通过brew直接安装redis
brew install redis
brew services start redis
2、启动redis服务
// 启动
brew services start redis
// 关闭
brew services stop redis
// 重启
brew services restart redis
3、连接redis
redis-cli

二、安装redis扩展phpredis

1、下载源
git clone https://github.com/phpredis/phpredis.git
// 我这边找对应版本拉的zip
https://github.com/phpredis/phpredis
2、移动进入目录
mv phpredis /usr/local/Cellar
cd /usr/local/Cellar/phpredis
3、执行检测生成相应的configure文件
phpize
4、开始编译
// 由于本机安装了多个版本php,需要 --with-php-config=*
./configure --with-php-config=/usr/local/Cellar/php@7.2/7.2.34_10/bin/php-config
make && make install

// 查看php-config路径
which php-config
5、修改php.ini,开启扩展
// 我本机php.ini路径
vim /usr/local/etc/php/7.2/php.ini
// 添加extension
extension=redis.so
6、重启php环境,使其生效
brew services restart php@7.2
7、检测扩展安装是否正常
// 输出打印能看到redis信息代表安装正确
<?php
  phpinfo();
?>
8、为何windows环境php.ini配置extension=redis即可,但macbook环境就需要extension=redis.so

WindowsMac环境下,PHP扩展的加载方式有所不同。在Windows环境下,PHP使用动态链接库(DLL)文件来加载扩展,因此只需要在php.ini文件中添加extension=redis即可。
而在Mac环境下,PHP使用共享对象(.so)文件来加载扩展。因此,需要在php.ini文件中添加extension=redis.so来加载Redis扩展。

这种差异是由于不同操作系统对动态链接库的命名约定不同。在Windows上,动态链接库的扩展名为.dll,而在类Unix系统(如Mac)上,动态链接库的扩展名为.so
因此,在Mac环境下,需要使用与操作系统匹配的扩展名(即.so)来加载Redis扩展。这样做可以确保PHP正确加载并使用Redis扩展的功能。

三、安装Composer依赖库predis

1、进入项目目录,安装依赖库predis
composer require predis/predis
2、laravel使用redis
// config => app.php配置aliases
'Redis' => Illuminate\Support\Facades\Redis::class

// .env配置redis配置参数
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

// 使用redis
Redis::hSet(CACHE_FOR_DATA, $cacheKey, $stringData);

四、安装过程中遇到的问题

1、遇到报错,php.ini开启扩展失败
PHP Startup: Unable to load dynamic library 'redis' (tried: /usr/local/lib/php/pecl/20170718/redis (dlopen(/usr/local/lib/php/pecl/20170718/redis, 0x0009): tried: '/usr/local/lib/php/pecl/20170718/redis' (no such file)), /usr/local/lib/php/pecl/20170718/redis.so (dlopen(/usr/local/lib/php/pecl/20170718/redis.so, 0x0009): tried: '/usr/local/lib/php/pecl/20170718/redis.so' (no such file))) in Unknown on line 0

// 参考类似错误
PHP Warning: PHP Startup: Unable to load dynamic library 'redis.so' (tried: /usr/lib64/php/modules/redis.so (/usr/lib64/php/modules/redis.so: .....................
2、分析问题

寻找问题过程中很坑,搜出来大多都是不符合场景的,经过多次搜索仔细核对发现以下几个原因:
其中,php.ini存在扩展目录配置extension_dir=/usr/local/lib/php/pecl/20170718

  • 原因1:实际扩展目录/usr/local/lib/php/pecl/20170718没有,(这里很奇怪,之前一直都是这么配的也没报错,暂时没找到原因)
  • 原因2:扩展目录extension_dir下没有'redis.so'
3、处理问题
(1)修改extension_dir
vim /usr/local/etc/php/7.2/php.ini
extension_dir = "/usr/local/lib/php/20170718"
(2)复制redis.so到扩展目录

这边也有一个坑,网上说phpredis编译之后的目录下有redis.so,但实际上是在其下级目录modules下,当时找了好久,还是理解的不够深。

// 复制phpredis编译之后的redis.so到扩展文件夹
cd /usr/local/Cellar/phpredis/modules
cp redis.so /usr/local/lib/php/20170718
4、其他问题:Mac系统which phpphpinfo()输出的php版本信息不一致

我这边也是在核对各个细节信息时发现的,竟然在iTerm输出的php版本信息跟我开发软件使用的不一致。
惊呆了,用了这么久也是没问题,之前安装了好几个版本php,装了又卸载,卸载了又装,估计是当时两个版本正好一致。

(1)修改~/.zshrc,我这边系统使用的是zsh
vim ~/.zshrc

// 追加替换PATH,原先7.2版本的注释
PATH=/usr/local/Cellar/php@7.2/7.2.34/bin
PATH=/usr/local/Cellar/php@7.2/7.2.34/sbin

// 执行生效
source ~/.zshrc

// 检验
which php
参考资料

https://www.cnblogs.com/dragon88/p/11880699.html
https://www.cnblogs.com/benbenhan/articles/13839065.html

相关文章

  • 记一次 hyperf 云服务器部署

    项目技术栈 hyperf vant 环境需要 PHP7.4 ( redis.so + swoole.so) COM...

  • 笔记:2018-06-04 redis在mac上安装

    redis命令行操作 redis 在 mac 下的安装与使用Mac环境下安装Redis Redis安装的时候报错:...

  • Linux环境安装Redis服务

    CentOS环境上Redis的安装与配置 源码安装 yum安装gcc依赖 解压 编译安装 直接启动redis 以后...

  • redis 搭建与使用

    redis 搭建与使用 首先安装redis 在这里安装的是redis源码包,所以需要gcc环境支持 将从redis...

  • Redis 集群

    安装 Redis 1、安装环境与版本: 3个CentOS 7 虚拟机 6个Redis 实例,redis集群需要至少...

  • macbook安装redis

    1.redis官网下载 3.移动到usr/local目录下: 4.切换到/usr/local/redis-5.0....

  • MacBook安装Redis

    官方下载地址:https://redis.io/download[https://redis.io/downloa...

  • golang连接sqlserver数据库

    先安装好Golang环境 MacBook Linux 树莓派raspberrypi安装Golang环境[https...

  • 简 | 编译安装Redis

    环境 CentOS 7.2 Redis 4.0.6 安装编译依赖包 安装redis依赖 编译安装Redis 添加配...

  • CentOS7安装redis

    redis安装 安装依赖 安装redis 配置环境变量: 开启redis服务 关闭redis 设置后台运行 将启动...

网友评论

      本文标题:Macbook安装redis环境与 'redis.so' 丢失问

      本文链接:https://www.haomeiwen.com/subject/fswgodtx.html