36

Can anyone help me install php-redis in MAC OSX .

brew install php-redis

not working.

pecl install php-redis

also not working getting -

invalid package name/package file "php-redis".

Homebrew Error:

homebrew_error

Ankit Jain
  • 603
  • 2
  • 6
  • 17
  • 4
    It'd be `pecl install redis`, and "not working" is pretty vague. Give us the errors/difficulties you encountered and maybe we can help with the Homebrew side. – ceejayoz Aug 18 '18 at 11:21
  • Hi i have inserted homebrew install problem in image here : https://i.stack.imgur.com/jJgg7.png I need to install php-redis . Already install redis with : brew install redis which is working fine. – Ankit Jain Aug 18 '18 at 11:38
  • See here but adapt for Redis https://stackoverflow.com/a/50529784/2836621 – Mark Setchell Aug 18 '18 at 12:12
  • 1
    `pecl help` is useful to discover `pecl search` which is useful , like : `pecl search edis` would have given you the answer you are looking for. – YvesLeBorg Aug 18 '18 at 13:48
  • @MarkSetchell point where you wrote " brew options this", there is no options for php-redis. – Ankit Jain Aug 19 '18 at 07:10
  • Exactly, that's what I am saying. There is no `php-redis` any more, that's why you cannot do `brew install php-redis` nor `brew options php-redis`. You need to use `pecl` to install Redis and make it known to PHP. – Mark Setchell Aug 19 '18 at 07:17

7 Answers7

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

Add extension=redis.so in your php.ini

brew services restart php@7.2
make test

You can check working or not

php -r "if (new Redis() == true){ echo \"\r\n OK \r\n\"; }"
Nanhe Kumar
  • 15,498
  • 5
  • 79
  • 71
50

As of 2019, with homebrew php7.2 and up, pecl is now installed by default alongside the php binaries.

To see this for yourself type which pecl.

Steps to install

  1. Check your version of redis, then find a suitable version of the extension here.

  2. If unfamiliar with pecl, type pecl to see the options.

  3. Issue pecl install redis-5.0.2. (or your version). Enter no to each question asked if you're not sure.

  4. If that succeeds check the new file it created at: /usr/local/lib/php/pecl/20180731/redis.so

  5. The install will have added extension="redis.so" to top of your php ini. Check that by opening the file /usr/local/etc/php/7.3/php.ini. (assuming you're on 7.3 there)

  6. brew services restart php.

  7. php -i | grep Redis

Redis Support => enabled
Redis Version => 5.0.2

This is what I just did in September 2019 and it works for me.

mwal
  • 2,803
  • 26
  • 34
  • 6
    Also after upgrading to PHP 7.4, I had to reinstall redis ext with pecl: `pecl uninstall redis`, then `pecl install redis` – Evgeniy Maynagashev Dec 07 '19 at 16:29
  • Worked for me as well for PHP 7.3. Thanks – Amitav Roy Mar 09 '20 at 01:31
  • 8
    If you get: Warning: mkdir(): File exists in System.php on line 294 error, run pecl config-get ext_dir | pbcopy, then mkdir -p {paste clipboard value}, then sudo pecl install redis-5.3.2 – Murat Tutumlu Jan 07 '21 at 19:00
  • 1
    `pecl install redis` was not working for me without `sudo`: https://superuser.com/a/1707730/79629 – andrewtweber Mar 02 '22 at 14:52
  • If the extension isn't loading; in my case pecl installed `redis.so` in a different location. `pecl install redis-x` outputs this. After updating the top line in the php.ini file to the correct location the extension loaded correctly. – user3703155 Jan 03 '23 at 11:23
10

If what mwal wrote above doesn't work (please try their answer first),

first, try to uninstall first (if you have it but broken):

sudo pecl uninstall redis 

and after that run:

sudo pecl install redis

After that, ini the php.ini, use full path for the extension.

Mine was /usr/local/Cellar/php@7.3/7.3.21/pecl/20180731/redis.so (assuming you are using php@7.3)

so at the top of my php.ini file is like this:

extension="/usr/local/Cellar/php@7.3/7.3.21/pecl/20180731/redis.so"
Alex King
  • 2,504
  • 23
  • 26
Abdul Rahman A Samad
  • 1,062
  • 1
  • 15
  • 21
2

If someone gets an error during sudo pecl install redis

Warning: mkdir(): File exists in System.php on line 294

PHP Warning: mkdir(): File exists in /opt/homebrew/Cellar/-----/pear/System.php on line 294

that means you need to create the broken directory manually. Try to create the directory...

pecl config-get ext_dir | pbcopy
mkdir -p {paste clipboard value}
# in my case, it was
mkdir -p /opt/homebrew/lib/php/pecl/20200930

Now try to install any pecl extensions.

sudo pecl install redis

After installing any extension, restart php

brew services restart php

Happy coding :)

Eliyas Hossain
  • 550
  • 4
  • 19
1

Here are steps to use pickle, for PHP >= 7.3 (tested with 8.1):

  1. brew install pickle
  2. pickle install redis
  3. Find your php.ini location via php -i|grep php.ini
  4. Edit the php.ini, insert extension=redis. Preferable at Dynamic Extensions section.
  5. No restart of Apache httpd service is required. You may test your PHP code with Redis

Bonus

If you use VS Code, to enable intellisense / auto complete, at Preference -> paste intelephense.stubs at Search setting box -> Add Item -> select redis.

Lee Chee Kiam
  • 11,450
  • 10
  • 65
  • 87
0

If you got the following error,

Please make sure the PHP Redis extension is installed and enabled

despite doing everything in the verified answer above, try valet restart . It worked for me

RusJaI
  • 666
  • 1
  • 7
  • 28
Fatih
  • 19
  • 3
0

I have tried all these solutions but didn't work for me for a while so I tried this link https://developer.redis.com/develop/php/ from the original docs and it works as charm

Dev_meno
  • 124
  • 14