menu

Questions & Answers

Does the Redis PHP extension installed through PECL work on Mac M1?

The Redis server is running successfully using Homebrew with brew services start redis. The PECL Redis installer appears to work with sudo pecl install redis , giving the following output:

Build process completed successfully
Installing '/opt/homebrew/Cellar/php@7.4/7.4.28/pecl/20190902/redis.so'
install ok: channel://pecl.php.net/redis-5.3.7
Extension redis enabled in php.ini

If I use php --ini, this is the output:

Warning: PHP Startup: Unable to load dynamic library 'redis.so' (tried: /opt/homebrew/lib/php/pecl/20190902/redis.so (dlopen(/opt/homebrew/lib/php/pecl/20190902/redis.so, 0x0009): tried: '/opt/homebrew/lib/php/pecl/20190902/redis.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/local/lib/redis.so' (no such file), '/usr/lib/redis.so' (no such file)), /opt/homebrew/lib/php/pecl/20190902/redis.so.so (dlopen(/opt/homebrew/lib/php/pecl/20190902/redis.so.so, 0x0009): tried: '/opt/homebrew/lib/php/pecl/20190902/redis.so.so' (no such file), '/usr/local/lib/redis.so.so' (no such file), '/usr/lib/redis.so.so' (no such file))) in Unknown on line 0

The redis.so library is in /opt/homebrew/lib/php/pecl/20190902.

Is there any way to get this library working on Mac M1?

Comments:
Answers(2) :

You can run pecl with arch to ensure that the architecture is arm64.

arch -arm64 sudo pecl install redis

Alternatively, you can use a brew tap I maintain (shivammathur/extensions).

brew tap shivammathur/extensions
brew install redis@7.4

I had the same problem.

Basically I have done the same like accepted answer

arch -arm64 sudo pecl install redis

But that didn't work for me immediately. I needed to reinstall redis.

pecl uninstall redis

pecl install redis

And after that it finally worked. I hope that it will help somebody, I spent on this problem few hours.