centos在安装了php5.3和php5.6的环境前提下安装php-redis扩展

    我们的项目所在的服务器的lamp环境中,经过这次安装php-redis扩展的时候才发现,服务器上竟然存在两个版本的php,一个是系统自带的版本5.3,一个是另外安装的版本5.6,而且似乎没有人安装过docker什么的来控制环境版本,这就尴尬了。。。

    我首先百度centos上安装php-redis扩展的时候,根据流程,编译安装好以后,修改php.ini,重启apache后没有生效,php -m也没有看到redis出现在module的列表中,所以想查阅资料解决这个问题,然后php -v时发现php版本是5.6,而且通过phpinfo()查看扩展时发现其configure的路径不是php.ini所在的/etc/php.ini,而是/usr/local/php5/etc/php.ini,而这个路径文件不存在,所以找不到php.ini,我就认为文件缺失导致,然后将文件拷贝到这个路径,还有redis.so文件也是拷贝到相关extension路径,然后可以找到php.ini文件了。

    然而还没有结束,虽然找到了,但是还是没有生效,php -m不仅找不到redis.so,还出现了错误,后来经过各大论坛和手册资料的查阅一番后,因为我运行/usr/bin/php -v发现版本是5.3,所以我之前编译使用的/usr/bin/phpize和/usr/bin/php-config在相同的路径下都是5.3版本的,然后编译安装到了/usr/lib64/php/modules路径中了,在5.6版本中的php拷贝过去的是版本5.3编译的,所以我删掉这个redis.so后,通过版本5.6的phpize和php-config两个文件重新编译安装了php-redis,然后成功出现在了extension文件夹中,然而运行后出现了另外的报错,似乎是不能加载动态链接库redis.so,因为其出现了undefined symbol:executor_globals,这个问题目前横在我的面前,查过一些方法,没有什么用处。

    就在看似毫无办法之际,我突然想到为什么不切换到php5.3版本来使用,之前安装好的redis.so在5.3版本上是可以的应该,可以运行find / -name php或者whereis php查找所有的php文件及文件夹,然后我运行/usr/bin/php -v发现版本是5.3,/usr/sbin/php -v版本是5.6,这样找到了两个php的执行文件,然后查询系统环境变量$PATH,发现是5.6版本的在前执行,所以环境上php版本是5.6的版本,所以我用mv /usr/sbin/php /usr/sbin/php5.6.bak进行重命名,使其环境上执行之后的php5.3的版本,也就是/usr/bin/php,然后php -v发现版本改变为了5.3的版本,php -m中也发现了redis成功安装上去的标志,然后我利用简单的php文件代码:

<?php
  $redis = new Redis();
  $redis->connect('127.0.0.1',6379);
  $redis->set('test','hello world!');
  echo $redis->get('test');
 ?>

    用来测试一下redis是否成功运行。输入php xxx.php(文件名),可以看到hello world说明执行成功。如果环境没有改变,还是5.6的版本的话,也可以直接用/usr/bin/php xxx.php执行文件,这样也可以用5.3版本执行。

    这些问题的讲述我简化了许多,其中很多问题也费了很长时间,通过各种查询资料和阅读材料,我也对于linux的环境方面有更深刻的认识和了解,真的是遇到了问题,解决了问题,也学到了知识啊。

文章来源: centos在安装了php5.3和php5.6的环境前提下安装php-redis扩展

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:centos在安装了php5.3和php5.6的环境前提下安装php-redis扩展