PHPRedis扩展无法工作,无法加载'redis.so'文件。

16

我使用yum安装了nginx、php、php-fpm以及php-pecl-redis。

这些都能工作,但是最后一个却不能。

当我运行/usr/sbin/php-fpm时,会得到以下错误信息:

PHP 警告: PHP Startup: 无法加载动态链接库 '/usr/lib/php/modules/redis.so' - /usr/lib/php/modules/redis.so: undefined symbol: igbinary_unserialize in Unknown on line 0

我不知道igbnary_unserialize代表什么意思以及如何修复它。

我已确认redis.so文件存在,并且在php.ini中添加了extension=redis.so

PHP版本:5.3.3

PhpRedis版本:2.2.7


你能获取 php_info() 吗? - Bob van Luijt
@BobvanLuijt 如果您是指 phpinfo(),我可以获取它。但我仍然找不到关于 Redis 的信息在那个页面上。 - pearzl
6个回答

34

我遇到了同样的问题。我使用的是Ubuntu 16.04 LTS操作系统。运行sudo apt-get install php-igbinary解决了我的问题。虽然我还有其他问题,但这个命令解决了这一个。


4
在从php7.0升级到7.1之后,我的redis无法工作...我在各个论坛上苦苦寻找解决方法,最终这个方法起了作用...感谢Matt! - Ninad Ajnikar
1
升级到php7.2后,我遇到了同样的问题,解决方案对我也有效。谢谢。 - Aftab Naveed
1
这应该是答案 :) - Mihail Minkov
1
当我更新Nextcloud(15->16)的时候,升级到php7.3(从7.0)对我也是一样。(Linux Mint Debian Edition)。 - Skalli
同时,没有针对php7.4的版本; 将安装以下附加软件包:   php5.6-igbinary php7.0-igbinary php7.1-igbinary php7.2-igbinary php7.3-igbinary php8.0-igbinary - David Okwii

17

对于像我一样将php从7.0升级到7.4,无法让php-redis正常工作的人来说,这是我在按照上面的答案后使用的步骤。

1)删除Redis

sudo apt purge php-redis

2) 安装 Igbinary

sudo apt-get install php-igbinary

3) 再次安装php-redis

sudo apt-get install php-redis

我执行了上述步骤,因为似乎只有 PHP7.0 才能识别 php-redis 安装,但当前启用的 PHP7.4 却不能。

如果问题仍未解决,我建议删除其他版本的 PHP。


直截了当、准确无误的回答。 - C-Spydo

2
可能是 igbinary 的问题,是否已安装?(例如尝试: cat /etc/php.d/igbinary.ini)。在这里您可以找到并安装 igbinary

php_info() 的结果是什么? - Bob van Luijt
php_info()是正确的函数吗?在插入该函数后,我得到了500错误。 - pearzl
如果你在终端中输入:php php_info();会发生什么? - Bob van Luijt
我得到了与浏览器中相同的消息。我将重新安装环境。 - pearzl

2

在 Ubuntu 20 和 PHP 7.4 上 我尝试了以下方法并且成功了:

sudo apt purge php-redis 

sudo apt  intall php-redis  php7.4-redis

测试 Redis 服务器:

$ php --ri redis
or 
$ redis-cli ping
$ redis-cli info stats

2
与此错误相关的内容,请移步https://bugs.launchpad.net/ubuntu/+source/php-redis/+bug/1762935
您应该通过apt purge php-redis卸载php-redis包,然后通过pecl install redis重新安装。
您应该在php.ini中添加"extension=redis.so"。
并且从您的php目录中删除config.d中的redis。
rm /etc/php/7.2/fpm/conf.d/@20-redis.ini

并且

rm /etc/php/7.2/cli/conf.d/@20-redis.ini

重新启动PHP FPM,您将看到问题已解决。

0

只需要解决同样的问题:

yum安装的php-pecl-redis会导致这个问题。 因此,您需要手动安装php-redis。下载包并执行phpize - configure - make ....


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