PHP Warning: PHP Startup: Unable to load dynamic library ‘redis.so’

环境配置

##服务器centos8
##Apache:2.4
##redis:6.2
##phpredis:5.3 

前提

##已安装软件所需扩展
##安装过程并无报错
##已经配置php.ini文件,最末行写入extension=redis.so

测试扩展是否成功运行

php -ri redis

##报错
PHP Warning:  PHP Startup: Unable to load dynamic library 'redis.so' (tried: /usr/lib64/php/modules/redis.so (/usr/lib64/php/modules/redis.so: undefined symbol: php_json_decode_ex), /usr/lib64/php/modules/redis.so.so (/usr/lib64/php/modules/redis.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

问题原因

##可能与扩展调用顺序有关,调用顺序的先后可能会影响扩展的正常运行

##可能是扩展路径的缘故,推荐使用绝对路径

##由于各软件版本不同,配置存在差异,不能按照老版本的配置步骤来配置

##配置冲突,可能安装时已经对扩展进行了配置,我们再配置就冲突了

解决方案

###只针对本章问题

#找到php.d扩展目录进入
cd php.d

#根据其中展示的扩展文件,创建redis扩展
vi 30-redis.ini

#写入下述代码
; Enable redis extension module
extension=redis

#保存退出,并删除之前在php.ini文件中写入的配置

最后重启服务,问题解决。

除PHP扩展外,例如Apache服务,也可以按照上述思路解决扩展问题。