A-A+

Linux中Redis无法启动扩展的问题

2019年11月11日 PHP技术文章 评论 1 条 阅读 0 views 次

今天发现linux服务器的php-fpm出现了一些问题,需要重新启动一下php-fpm,不过在启动php-fpm的时候,redis so 竟然无法进行载入了,我们先来看一下linux服务端的操作,如下:

  1. [root@brand009 modules]# /usr/sbin/php-fpm  
  2.   
  3. /usr/sbin/php-fpm: /usr/lib64/libssl.so.10: no version information available (required by /usr/sbin/php-fpm)  
  4.   
  5. /usr/sbin/php-fpm: /usr/lib64/libcrypto.so.10: no version information available (required by /usr/sbin/php-fpm)  
  6.   
  7. /usr/sbin/php-fpm: /usr/lib64/libcrypto.so.10: no version information available (required by /usr/sbin/php-fpm)  

我们可以看出在重启 php-fpm 的过程中,redis so发生了无法加载的情况,redis如果不能使用的话,整个项目就停顿了下来,好多功能都无法使用,所以这是首要解决的问题,我们通过提示的错误大致能看得出来应该是版本的问题,看 version,所以解决的思路估计和版本有关系,首先查一下 php 的 version 版本,如下:

  1. php --version  
  2.   
  3. PHP 5.6.6 (cli) (built: Mar 9 2015 13:27:38)   
  4.   
  5. Copyright (c) 1997-2015 The PHP Group  
  6.   
  7. Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies  

我们可以看到使用的 php 版本为 5.6.6,然后接着查询 php-fpm 的版本,如下:

  1. $/usr/sbin/php-fpm -v  
  2.   
  3. PHP 5.3.3 (fpm-fcgi) (built: Oct 30 2014 20:14:56)  
  4.   
  5. Copyright (c) 1997-2012 The PHP Group  
  6.   
  7. Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies  

php-fpm 的版本为5.3.3,果然是两者版本不一致造成的错误,我们知道 php 内部有集成的 php-fpm ,而这个内部集成的 php-fpm 和 php的版本是一致的,也就是 5.6.6,所以这里我们要更换成为php 内部集成的 php-fpm 就可以了,让 php 和 php-fpm 一致就OK了,使用 php 内部集成 php-fpm,然后重新启动 php-fpm,成功,如下:

  1. root   18442   1 0 17:36 ?    00:00:01 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)  
  2.   
  3. nobody  30640 18442 0 18:04 ?    00:00:02 php-fpm: pool www       
  4.   
  5. nobody  31156 18442 0 18:05 ?    00:00:02 php-fpm: pool www       
  6.   
  7. nobody  32424 18442 0 18:08 ?    00:00:02 php-fpm: pool www  

这里要注意一点的是,redis.so如果还是无法加载的话,我们可以查询一下 php.ini 中的 extension_dir和extension 的配置,如下:

  1. extension_dir = "/usr/lib64/php/modules/"  
  2.   
  3. extension=redis.so  

phpredis 编译出来的 redis.so 我们同样需要拷贝到 /usr/lib64/php/modules/ 的目录下面,另外 /etc/php.d/ 也需要做一个软链接,链接到 redis.so,而且还要创建一个 redis.ini 的文件,如果觉得麻烦的话,可以重新安装 php redis 即可,安装的代码如下:

  1. pecl install redis  
标签:

1 条留言  访客:1 条  博主:0 条

  1. 企业智库

    来回访了,欢迎多多走动!

给我留言