在MAC OSX上安装phpredis

37

有人可以帮我在MAC OSX上安装php-redis吗。

brew install php-redis

不能工作。

pecl install php-redis

还不能工作,得到 -

无效的包名/包文件“php-redis”。

Homebrew 错误:

homebrew_error


4
可以尝试使用命令 pecl install redis 安装 Redis,但是 "not working" 这个描述还比较模糊。如果你能提供遇到的错误或困难,我们或许可以帮助解决 Homebrew 的问题。 - ceejayoz
嗨,我在这里插入了一个homebrew安装问题的图像:https://i.stack.imgur.com/jJgg7.png 我需要安装php-redis。已经通过“brew install redis”安装了redis,正在正常工作。 - Ankit Jain
请参考此处,并针对Redis进行适应 https://dev59.com/Z1UL5IYBdhLWcg3wopMM#50529784 - Mark Setchell
1
pecl help 是一个有用的命令,可以帮助你发现 pecl search 命令。例如:pecl search edis 可以给你想要的答案。 - YvesLeBorg
@MarkSetchell,在您写“ brew options this”的地方,php-redis没有任何选项。 - Ankit Jain
没错,这就是我想说的。现在已经没有 php-redis 了,所以你不能再使用 brew install php-redis 或者 brew options php-redis。你需要使用 pecl 来安装 Redis 并让 PHP 知道它的存在。 - Mark Setchell
7个回答

76
git clone https://www.github.com/phpredis/phpredis.git
cd phpredis
phpize && ./configure && make && sudo make install

在您的php.ini文件中添加extension=redis.so

brew services restart php@7.2
make test

您可以检查是否工作

php -r "if (new Redis() == true){ echo \"\r\n OK \r\n\"; }"

1
你好,这是一个安装phpredis的好指南,但我应该把phpredis目录放在哪里? - Ivan
@Ivan:你可以在下载文件夹中下载。 - Nanhe Kumar
1
如果在OSX Mojave上无法正常工作,这个人可以帮到你:https://dev59.com/AFQK5IYBdhLWcg3wEr8X#52530212 - abbood
1
当我在我的php.ini中放置完整路径或redis.so时,它可以工作。 - Thomas Bredillet
我已经更新了php@8.0,再次重复上述步骤,现在可以正常工作了。 - Nanhe Kumar

51

从2019年开始,使用自制的php7.2及以上版本,pecl将默认与php二进制文件一起安装。

要查看自己的情况,请键入which pecl

安装步骤

  1. 检查您的redis版本,然后在此处找到一个适合的扩展版本。

  2. 如果对pecl不熟悉,请键入pecl以查看选项。

  3. 输入pecl install redis-5.0.2(或您的版本)。如果不确定,请每个问题都选择no。

  4. 如果安装成功,请检查它创建的新文件:/usr/local/lib/php/pecl/20180731/redis.so

  5. 安装将在您的php ini顶部添加extension="redis.so"。 通过打开文件/usr/local/etc/php/7.3/php.ini来检查它。 (假设您使用的是7.3)

  6. brew services restart php

  7. php -i | grep Redis

Redis Support => enabled
Redis Version => 5.0.2

这是我在2019年9月刚刚做过的,对我很有效。


6
升级到 PHP 7.4 后,我需要使用 pecl 重新安装 redis 扩展:pecl uninstall redis,然后 pecl install redis - Evgeniy Maynagashev
也适用于PHP 7.3,谢谢。 - Amitav Roy
8
如果你遇到了“在System.php的294行出现Warning: mkdir(): File exists”错误,请执行pecl config-get ext_dir | pbcopy命令,然后运行mkdir -p {粘贴剪贴板的值}命令,最后使用sudo pecl install redis-5.3.2安装redis-5.3.2。 - Murat Tutumlu
1
pecl install redis 在没有 sudo 的情况下对我来说无法工作:https://superuser.com/a/1707730/79629 - andrewtweber
如果扩展没有加载;在我的情况下,pecl将redis.so安装在不同的位置。 pecl install redis-x输出如下。在将php.ini文件中的顶部行更新为正确的位置后,扩展正确加载了。 - user3703155

11
如果上述mwal的回答无效(请先尝试其答案),首先尝试卸载(如果您已安装但是出现故障):
sudo pecl uninstall redis 

之后运行:

sudo pecl install redis

此后,在php.ini中,使用扩展的完整路径。

我的路径是/usr/local/Cellar/php@7.3/7.3.21/pecl/20180731/redis.so(假设您正在使用php@7.3)

所以我的php.ini文件顶部看起来像这样:

extension="/usr/local/Cellar/php@7.3/7.3.21/pecl/20180731/redis.so"

2
如果在sudo pecl install redis期间出现错误

警告:System.php的第294行中已存在mkdir()文件

PHP警告:/opt/homebrew/Cellar/-----/pear/System.php的第294行中已存在mkdir()文件

这意味着您需要手动创建损坏的目录。 尝试手动创建该目录...
pecl config-get ext_dir | pbcopy
mkdir -p {paste clipboard value}
# in my case, it was
mkdir -p /opt/homebrew/lib/php/pecl/20200930

现在尝试安装任何 pecl 扩展。

sudo pecl install redis

安装任何扩展后,请重新启动php
brew services restart php

编程愉快 :)


这正是我需要在我的机器上安装的东西。谢谢! - JasonJensenDev

1
以下是使用pickle的步骤,适用于PHP >= 7.3(已在8.1中测试):
  1. brew install pickle
  2. pickle install redis
  3. 通过php -i|grep php.ini查找您的php.ini位置。
  4. 编辑php.ini,在Dynamic Extensions部分插入extension=redis
  5. 无需重新启动Apache httpd服务。您可以使用Redis测试您的PHP代码。
奖励 如果您使用VS Code,为了启用智能感知/自动完成,请在Preference中粘贴intelephense.stubs到搜索设置框中,然后添加项目并选择redis

0

我尝试了所有这些解决方案,但是在一段时间内对我没有用,所以我从原始文档中尝试了这个链接https://developer.redis.com/develop/php/,它完美地解决了我的问题。


0
如果你遇到了以下错误,

Please make sure the PHP Redis extension is installed and enabled

尽管已经按照上面验证过的答案做了一切,还是无法解决问题,那么请尝试执行 valet restart 命令。这个方法对我很有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接