Centos安装PHP扩展:event

最近在使用Workerman这一个PHP socket 服务器框架,官方手册推荐安装libevent扩展(或者event扩展),这里选择安装event扩展

0、环境

系统:Centos 7.3
PHP:7.1.10 event: 2.3.0

1、安装支持库libevent

  1. git clone https://github.com/nmathewson/Libevent.git
  2. 运行包含的 autogen.sh 脚本以生成configure脚本。
    cd Libevent/
    ./autogen.sh
    
  3. 可能会提示错误信息:
    configure.ac:129: error: possibly undefined macro: AC_PROG_LIBTOOL
       If this token and others are legitimate, please use m4_pattern_allow.
       See the Autoconf documentation.
    autoreconf: /usr/bin/autoconf failed with exit status: 1
    
    解决办法:
    yum install libtool -y
    
  4. 生成 Makefile,同时指定安装路径,为下一步的编译做准备
    ./configure --prefix=/usr/local/libevent
    make
    sudo make install
    

2、安装event库

event的下载地址:http://pecl.php.net/package/event

  1. 下载解压
    wget http://pecl.php.net/get/event-2.3.0.tgz
    tar -zxvf event-2.3.0.tgz
    
  2. 生成 Makefile,同时指定安装路径,为下一步的编译做准备
    ./configure --with-php-config=/usr/bin/php-config --with-event-libevent-dir=/usr/local/libevent/
    
  3. 编译安装,重启服务器
    make
    sudo make install
    
  4. 修改php配置文件
    cd /etc/php.d/
    echo 'extension=event.so' > z-event.ini     #这里命名为z-event是为了避免出现后面的问题
    
  5. 重启php-fpm,查看是否安装成功
    systemctl restart php-fpm.service
    php -m
    php -m | grep event
    

问题

按上面步骤安装后,可能会出现下面错误:

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

这是由于php的socket扩展应该在event之前加载,可以将event.ini改名为z-event.ini即可。


Copyright ©2016-2018 红世幻境 All Rights Reserved

浙ICP备15041976号-2 联系邮箱: shana@tenshi.cc

Top