zoukankan      html  css  js  c++  java
  • 解决PHP Redis扩展无法加载的问题(zend_new_interned_string in Unknown on line 0)

    出错代码如下

    1 PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so' - /usr/lib64/php/modules/redis.so: undefined symbol: zend_new_interned_string in Unknown on line 0

    最近在工作中需要使用PHP访问Redis,从https://github.com/phpredis/phpredis下载了phpredis,并且按照官方的说明进行了安装

    phpize
    ./configure [--enable-redis-igbinary]
    make && make install

    但是在重启php-fpm的过程中,发生了如下的错误,redis.so无法载入

    root@brand009 modules]#  /usr/sbin/php-fpm
    /usr/sbin/php-fpm: /usr/lib64/libssl.so.10: no version information available (required by /usr/sbin/php-fpm)
    /usr/sbin/php-fpm: /usr/lib64/libcrypto.so.10: no version information available (required by /usr/sbin/php-fpm)
    /usr/sbin/php-fpm: /usr/lib64/libcrypto.so.10: no version information available (required by /usr/sbin/php-fpm)
    [29-Jun-2015 11:14:43] NOTICE: PHP message: PHP Warning:  PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/redis.so‘ - /usr/lib64/php/modules/redis.so: undefined symbol: zend_new_interned_string in Unknown on line 0
    <br />
    <b>Warning</b>:  PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/redis.so‘ - /usr/lib64/php/modules/redis.so: undefined symbol: zend_new_interned_string in <b>Unknown</b> on line <b>0</b><br />
    <br />

    试了网上一些解决方案,均无法解决问题。

    实在没别的办法,于是打算重装php-fpm试试,遂去http://php-fpm.org/download/想下载个新版本的php-fpm,结果发现版本大于5.3.3的PHP内部已经集成了php-fpm,不用再另行安装了。

     于是用php --version查询了一下PHP的版本,已经是5.6.6了,

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

    突然恍然大悟,自己一直用的是安装在另一个目录的php-fpm,和PHP并不是配套的

    查看这个php-fpm的版本,发现是5.3.3

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

    而PHP内部集成的php-fpm版本是5.6.6

    $ /usr/local/php/sbin/php-fpm -v
    PHP 5.6.6 (fpm-fcgi) (built: Mar  9 2015 13:27:55)
    Copyright (c) 1997-2015 The PHP Group
    Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

    用PHP内部集成的php-fpm重启,成功!

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

    所以粗心害死人啊,以后在安装程序的时候需要多加小心,尽量显式的标明软件的版本,这样就会少犯这样的错误,少走弯路了。

    另外需要注意:

    • 在php.ini中一定要配置extension_dir和extension,如:
      extension_dir = "/usr/lib64/php/modules/"
      extension=redis.so
    • phpredis编译出来的redis.so也需要拷贝到"/usr/lib64/php/modules/"中
    • "/etc/php.d/"中也要软连接redis.so,并且要创建一个redis.ini文件,内容如下:
      $ cat /etc/php.d/redis.ini 
      ; Enable redis extension module
      extension=redis.so
    • 安装phpredis还可以通过命令
      pecl install redis

    转载请标明出处

  • 相关阅读:
    Smart Client Architecture and Design Guide
    Duwamish密码分析篇, Part 3
    庆贺发文100篇
    .Net Distributed Application Design Guide
    New Introduction to ASP.NET 2.0 Web Parts Framework
    SPS toplevel Site Collection Administrators and Owners
    来自Ingo Rammer先生的Email关于《Advanced .Net Remoting》
    The newsletter published by Ingo Rammer
    深度探索.Net Remoting基础架构
    信道、接收器、接收链和信道接受提供程序
  • 原文地址:https://www.cnblogs.com/zmdComeOn/p/9604627.html
Copyright © 2011-2022 走看看