一,问题描述:
在命令行执行 "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 问题解决办法
发布评论