安装redis扩展后查看时候出现了这样报错:
[root@localhost phpredis-develop]# php -m | grep redis
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so' - /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so: undefined symbol: mysqlnd_allocator in Unknown on line 0
PHP Warning: PHP Startup: redis: Unable to initialize module
Module compiled with module API=20131226
PHP compiled with module API=20100525
These options need to match
in Unknown on line 0上边大概意思是,你的php鱼扩展模块的API不是同一个版本,不兼容
导致原因:
1.你的phpize有俩个版本,使用phpize一定要使用绝对路径,否则安装好的扩展模块会导致不兼容
2.查看phpize位置:
[root@localhost phpredis-develop]# find / -name phpize
/usr/bin/phpize 这个是默认版本的phpize
/usr/local/php56/bin/phpize 这个是新安装php的phpize位置,要使用这个
/data/php-5.6.36/scripts/phpize 这个是安装包的位置
解决方法:
[root@localhost phpredis-develop]# /usr/local/php56/bin/phpize
[root@localhost phpredis-develop]# ./configure --with-php-config=/usr/local/php56/bin/php-config #注意:这里的php-config也要用需要使用的php安装位置的php-config
[root@localhost phpredis-develop]# make test
[root@localhost phpredis-develop]# make install
Installing shared extensions: /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/[root@localhost phpredis-develop]# cp /etc/php.ini /usr/local/php56/etc/php.ini #/etc下的php.ini是默认版本的配置,你需要把这个拷贝到你安装的php位置下
[root@localhost phpredis-develop]# vim /usr/local/php56/etc/php.ini
extension=/usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/redis.so #这个是你make install 安装后的模块生效文件的位置
[root@localhost phpredis-develop]# /usr/local/php56/bin/php -m | grep redis #注意php -m 要使用绝对路径去查看,否则还会出现不兼容问题
redis