• 通过 PECL 安装 PHP 扩展(以 CentOS7 中安装 swoole 为例)


    常用工具

    PECL 和 phpize

    官网文档

    PHP 有大量的扩展可以使用,比如用于连接数据库的扩展 mysqli,图形库 gd2 等。扩展有两种安装方法:

    • 通过 pear install xxx 安装,需要提前在机器上安装 pear,CentOS 下可以通过 yum install php72w-pear 可以安装 PHP7.2 对应的版本
    • 用 phpize 源码编译安装,CentOS 下可以通过 yum install php72w-devel 可以安装 PHP7.2 对应的版本

    注意安装的扩展需要和 PHP 的版本匹配。例如我安装的是 PHP7.2,则需要安装 PHP7.2 对应的 php-devel 和 php-pear:

    [root@VM_139_74_centos ~]# yum list php72w*
    Loaded plugins: fastestmirror, langpacks
    Repository epel is listed more than once in the configuration
    Loading mirror speeds from cached hostfile
     * webtatic: us-east.repo.webtatic.com
    Installed Packages
    php72w-cli.x86_64                                         7.2.8-1.w7                             @webtatic
    php72w-common.x86_64                                      7.2.8-1.w7                             @webtatic
    php72w-devel.x86_64                                       7.2.8-1.w7                             @webtatic
    php72w-fpm.x86_64                                         7.2.8-1.w7                             @webtatic
    php72w-pear.noarch                                        1:1.10.4-1.w7                          @webtatic
    php72w-process.x86_64                                     7.2.8-1.w7                             @webtatic
    php72w-xml.x86_64                                         7.2.8-1.w7                             @webtatic
    Available Packages
    php72w-bcmath.x86_64                                      7.2.8-1.w7                             webtatic 
    php72w-dba.x86_64                                         7.2.8-1.w7                             webtatic 
    php72w-embedded.x86_64                                    7.2.8-1.w7                             webtatic 
    php72w-enchant.x86_64                                     7.2.8-1.w7                             webtatic 
    php72w-gd.x86_64                                          7.2.8-1.w7                             webtatic 
    php72w-imap.x86_64                                        7.2.8-1.w7                             webtatic 
    php72w-interbase.x86_64                                   7.2.8-1.w7                             webtatic 
    php72w-intl.x86_64                                        7.2.8-1.w7                             webtatic 
    php72w-ldap.x86_64                                        7.2.8-1.w7                             webtatic 
    php72w-mbstring.x86_64                                    7.2.8-1.w7                             webtatic 
    php72w-mysql.x86_64                                       7.2.8-1.w7                             webtatic 
    php72w-mysqlnd.x86_64                                     7.2.8-1.w7                             webtatic 
    php72w-odbc.x86_64                                        7.2.8-1.w7                             webtatic 
    php72w-opcache.x86_64                                     7.2.8-1.w7                             webtatic 
    php72w-pdo.x86_64                                         7.2.8-1.w7                             webtatic 
    php72w-pdo_dblib.x86_64                                   7.2.8-1.w7                             webtatic 
    php72w-pecl-apcu.x86_64                                   5.1.9-1.w7                             webtatic 
    php72w-pecl-apcu-devel.x86_64                             5.1.9-1.w7                             webtatic 
    php72w-pecl-geoip.x86_64                                  1.1.1-1.2.w7                           webtatic 
    php72w-pecl-igbinary.x86_64                               2.0.5-1.w7                             webtatic 
    php72w-pecl-igbinary-devel.x86_64                         2.0.5-1.w7                             webtatic 
    php72w-pecl-imagick.x86_64                                3.4.3-1.2.w7                           webtatic 
    php72w-pecl-imagick-devel.x86_64                          3.4.3-1.2.w7                           webtatic 
    php72w-pecl-libsodium.x86_64                              1.0.6-1.2.w7                           webtatic 
    php72w-pecl-memcached.x86_64                              3.0.4-1.w7                             webtatic 
    php72w-pecl-mongodb.x86_64                                1.4.1-1.w7                             webtatic 
    php72w-pecl-redis.x86_64                                  3.1.6-1.w7                             webtatic 
    php72w-pecl-xdebug.x86_64                                 2.6.0-1.w7                             webtatic 
    php72w-pgsql.x86_64                                       7.2.8-1.w7                             webtatic 
    php72w-phpdbg.x86_64                                      7.2.8-1.w7                             webtatic 
    php72w-pspell.x86_64                                      7.2.8-1.w7                             webtatic 
    php72w-recode.x86_64                                      7.2.8-1.w7                             webtatic 
    php72w-snmp.x86_64                                        7.2.8-1.w7                             webtatic 
    php72w-soap.x86_64                                        7.2.8-1.w7                             webtatic 
    php72w-sodium.x86_64                                      7.2.8-1.w7                             webtatic 
    php72w-tidy.x86_64                                        7.2.8-1.w7                             webtatic 
    php72w-xmlrpc.x86_64                                      7.2.8-1.w7                             webtatic

    pecl

    官网文档

    pecl install extname 命令自动下载源码、编译代码,并将编译后的 extname.so 安装到 extension_dir 中。然后编辑 php.ini 引入 extname.so 就可以加载了。

    phpize

    使用 pecl 需要提前将扩展库发布到 PECL 官方仓库中。而源码安装更灵活。

    phpize 的通用流程:

    $ cd extname
    $ phpize
    $ ./configure
    $ make
    # make install

    php 命令

    通过 php -m 可以查看 PHP 中安装的扩展。

    php-config

    官网文档
    php-config 可以用于获取 PHP 的配置信息。可以通过 -h 选项来显示 php-config 脚本在命令行所能使用的选项。

    这里需要用 php-config --extension-dir 来查看 PHP 的扩展目录位置:

    [root@VM_139_74_centos ~]# php-config --extension-dir
    /usr/lib64/php/modules
    [root@VM_139_74_centos ~]# ll /usr/lib64/php/modules/
    total 6500
    -rwxr-xr-x 1 root root   24752 Jul 20 23:31 bz2.so
    -rwxr-xr-x 1 root root   33872 Jul 20 23:31 calendar.so
    -rwxr-xr-x 1 root root   15648 Jul 20 23:31 ctype.so
    -rwxr-xr-x 1 root root   87072 Jul 20 23:31 curl.so
    -rwxr-xr-x 1 root root  176720 Jul 20 23:31 dom.so
    -rwxr-xr-x 1 root root   86136 Jul 20 23:31 exif.so
    -rwxr-xr-x 1 root root 5053064 Jul 20 23:31 fileinfo.so
    -rwxr-xr-x 1 root root   62056 Jul 20 23:31 ftp.so
    -rwxr-xr-x 1 root root   15744 Jul 20 23:31 gettext.so
    -rwxr-xr-x 1 root root   70400 Jul 20 23:31 gmp.so
    -rwxr-xr-x 1 root root   41104 Jul 20 23:31 iconv.so
    -rwxr-xr-x 1 root root   44888 Jul 20 23:31 json.so
    -rwxr-xr-x 1 root root  278160 Jul 20 23:31 phar.so
    -rwxr-xr-x 1 root root   37120 Jul 20 23:31 posix.so
    -rwxr-xr-x 1 root root   15728 Jul 20 23:31 shmop.so
    -rwxr-xr-x 1 root root   58456 Jul 20 23:31 simplexml.so
    -rwxr-xr-x 1 root root   91688 Jul 20 23:31 sockets.so
    -rwxr-xr-x 1 root root   15880 Jul 20 23:31 sysvmsg.so
    -rwxr-xr-x 1 root root   11568 Jul 20 23:31 sysvsem.so
    -rwxr-xr-x 1 root root   15800 Jul 20 23:31 sysvshm.so
    -rwxr-xr-x 1 root root   19936 Jul 20 23:31 tokenizer.so
    -rwxr-xr-x 1 root root   32744 Jul 20 23:31 wddx.so
    -rwxr-xr-x 1 root root   32960 Jul 20 23:31 xmlreader.so
    -rwxr-xr-x 1 root root   54216 Jul 20 23:31 xml.so
    -rwxr-xr-x 1 root root   49232 Jul 20 23:31 xmlwriter.so
    -rwxr-xr-x 1 root root   32984 Jul 20 23:31 xsl.so
    -rwxr-xr-x 1 root root  138776 Jul 20 23:31 zip.so

    安装 PHP 环境

    安装epel-release

    epel 是 Extra Packages for Enterprise Linux (EPEL),仓库资源丰富且更新及时。参考 这里

    yum -y install epel-release

    获取 PHP7 的yum源

    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

    查看可用的 PHP7 版本列表

    yum list php7*

    安装 PHP7.2

    用于执行 PHP 脚本。

    yum install php72w

    安装 PHP-FPM

    用于在 PHP 和 Nginx 之间通信。

    yum install php72w-fpm

    安装 PEAR

    安装后,可以使用 pecl 命令来安装软件。可以通过 PHP 官方提供的 pecl 命令从 PHP 的官方扩展库安装扩展。

    yum install php72w-pear

    安装 phpize

    安装后,可以使用 phpize 命令从源码编译 PHP 扩展,得到 *.so 文件。

    yum install php72w-devel

    安装 swoole

    pecl install swoole

    修改 php.ini 配置文件

    添加这句话:

    extension=swoole.so

    常见问题

    建议 Linux 系统安装完成后,立刻安装各种编译工具,可以减少很多麻烦。

    configure: error: no acceptable C compiler found in $PATH

    原因:系统中没有安装 C 编译器。
    解决办法:安装 GCC 软件套件。

    yum install gcc

    configure: error: C++ preprocessor “/lib/cpp” fails sanity check

    原因:系统中没有安装 C++ 预处理器。
    解决办法:安装 C++ 软件套件。

    yum install glibc-headers gcc-c++
  • 相关阅读:
    对"对DllRegisterServer的调用失败,错误代码为0x8007005"的解决办法
    Struts FileUpload 异常处理之Processing of multipart/formdata request failed.
    Java设计模式之简单工厂模式(转载)
    [转]VS 2008 中文"试用版"变"正式版"方法
    XP系统中多用户,自动登陆(一)
    常见Flash无法播放现象处理
    [转]顺利迈出职业成功的第一步
    VS2005的BUG:Cannot convert type 'ASP.login_aspx' to 'System.Web.UI.WebControls.Login'
    OO设计原则
    ASPX页面生成HTML的方法
  • 原文地址:https://www.cnblogs.com/kika/p/10851551.html
Copyright © 2020-2023  润新知