一,问题描述:

在命令行执行 "php -m" 查看安装了哪些扩展模块时,出现了如下错误提示:

# php -m
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20190902/redis.so' (tried: /usr/lib/php/20190902/redis.so (/usr/lib/php/20190902/redis.so: undefined symbol: igbinary_serialize), /usr/lib/php/20190902//usr/lib/php/20190902/redis.so.so (/usr/lib/php/20190902//usr/lib/php/20190902/redis.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'memcached.so' (tried: /usr/lib/php/20190902/memcached.so (/usr/lib/php/20190902/memcached.so: undefined symbol: igbinary_serialize), /usr/lib/php/20190902/memcached.so.so (/usr/lib/php/20190902/memcached.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

二,原因分析:

没有安装 igbinary_serialize 扩展。

三,解决方法:

1. Ubuntu 系统:
 

$ sudo apt install php-igbinary

2. centOS 系统:

$ sudo yum install php-pecl-igbinary

3. 编译方式安装

$ cd /usr/local/src/
$ wget http://pecl.php/get/igbinary-3.1.2.tgz
$ tar -xvf igbinary-3.1.2.tgz
$ cd igbinary-3.1.2
$ phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make
$ make install

四,类似问题

报错:(php_json_decode_ex )
 

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so' - /usr/lib64/php/modules/redis.so: undefined symbol: php_json_decode_ex in Unknown on line 0

报错:(json_globals )

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/src/phpredis-develop/modules/redis.so' - /usr/local/src/phpredis-develop/modules/redis.so: undefined symbol: json_globals in Unknown on line 0

原因分析:

The ini-files in /etc/php/conf.d are loaded in alphabetical order. If you follow the [extension name].ini convention, this should naturally work since i(gbinary.ini) comes before r(edis.ini).

无论是 php.ini 或者配置成 /etc/php/conf.d 中单独的 xxx.ini 扩展文件,加载这些扩展的顺序都是依扩展名称的字母为序的。

出现上面的问题,多是因为 redis 和 json 扩展加载顺序冲突导致的。

解决办法:

需要调整这些扩展的加载顺序,将 json 扩展放到 redis 前面。

 

更多推荐

PHP Warning: PHP Startup: Unable to load dynamic library 问题解决办法