php版本跟扩展模块版本不兼容问题

安装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

猜你喜欢

转载自www.cnblogs.com/byfboke/p/9166107.html