如何自行编译安装PHP扩展?

虚竹 2018-7-24 3030

AppNode 提供了100多个 PHP 扩展,应该来说是国内最全的了,这要归功于 Remi Repo 的贡献。

一般情况下,只要直接安装 PHP 扩展安装包就可以直接使用了。

但是如果一些情况下,你需要使用特定版本的 PHP 扩展,可能需要自行编译安装 PHP 扩展。

下面以 yaf v3.0.7 扩展为例介绍编译安装 PHP 7.1 扩展的步骤:

1. 下载源码包

所有的 PHP 扩展都可以在 http://pecl.php.net/ 上找到源码包。
yaf 扩展的页面为:http://pecl.php.net/package/yaf
下载源码包命令:

wget http://pecl.php.net/get/yaf-3.0.7.tgz


2. 解压源码包

tar zxf yaf-3.0.7.tgz


3. 安装 PHP 开发包

yum install appnode-php71-php-devel -y


4. 切换到 PHP 7.1 环境

AppNode 使用 SCL 规范打包多版本并存的 PHP 环境,因此要切换到 7.1 版本下进行编译。
使用以下命令切换到 PHP 7.1 环境:

scl enable appnode-php71 bash

切换后使用命令 php -v 查看下 PHP 版本,确实是 7.1

# php -v
PHP 7.1.19 (cli) (built: Jul 20 2018 10:47:58) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.1.19, Copyright (c) 1999-2018, by Zend Technologies


5. 编译安装 yaf 扩展

使用以下命令编译安装 yaf 扩展:

phpize
./configure
make && make install

编译安装完成后,我们可以看到最后一行输出:

Installing shared extensions:     /opt/appnode/appnode-php71/root/usr/lib64/php/modules/

说明扩展模块文件已安装到 /opt/appnode/appnode-php71/root/usr/lib64/php/modules/ 目录下。
使用命令查看下:

# ls /opt/appnode/appnode-php71/root/usr/lib64/php/modules/ | grep yaf
yaf.so

yaf.so 就是 yaf 扩展模块。

6. 增加 yaf 扩展的配置

在 PHP 7.1 的扩展配置文件目录下,创建 yaf 的配置文件。

PHP 7.1 的扩展配置文件目录位于:
/etc/opt/appnode/scls/appnode-php71/php.d/
其它版本的配置文件目录请参考:https://help.appnode.com/command/software-env.html
在这个目录下,创建文件 99-yaf.ini,并写入 yaf 模块加载配置,如:
extension=zip.so
也可以直接使用命令写入配置文件:

echo "extension=zip.so" > /etc/opt/appnode/scls/appnode-php71/php.d/99-yaf.ini

配置文件前缀 99- 表示扩展的加载顺序(有些扩展会依赖其它扩展,需要自行确认)。

7. 测试扩展是否生效

php -m | grep yaf

如果有输出 yaf ,说明扩展已生效。

8. 退出 PHP 7.1 环境

exit
最新回复 (6)
  • mingge16888 2018-7-25
    引用 2
    获益良多
  • mingge16888 2018-7-25
    引用 3

    text

    我试了下装sql_srv,
    phpize
    ./configure
    都OK了

    到最后一步make && make install,出错了



    /data/mingge/ccc/pdo_sqlsrv-5.2.0/pdo_dbh.cpp
    make: *** [pdo_dbh.lo] Error 1

    卡住了,这是为什么呢?虚竹 ,按足你教程走了,这步怎么破

    上传的附件:
  • 虚竹 2018-7-25
    引用 4
    编译器版本太低,升级到支持c++11规范的版本。
  • mingge16888 2018-7-25
    引用 5
    搞好了,我会装扩展了,果然高手,一看就知什么问题
  • izhangxm 2021-12-8
    引用 6

    不是太行 还是找不到

    上传的附件:
  • izhangxm 2021-12-8
    引用 7
    可能是系统不太干净的原因 我使用新系统就正常了
返回
发新帖