一般 php 扩展编译安装方式如下

扩展编译步骤

以扩展 ataencoder 为例

  • 进入扩展目录
  • ./phpize
  • ./configure ./configure –enable-ataencoder
  • make
  • make install

编译不同 php 版本的扩展

如果扩展需要兼容多个 php 版本,则需要在本地先编译测试,需要为不同版本编译不同的 so 包, 步骤如下:

安装不同版本的 php

  • 下载对应版本的源码,比如 7.0.33 和 7.2.10 版本
  • 分别进入两个版本的目录,编译并安装
  • 这个时候系统就有两个版本的 php
  • 在 ubuntu 系统上,可以使用 update-alternatives 来设置默认的 php 版本,如果没有这个工具,则可以使用软链接实现

编译安装步骤

  • 选定要编译 php 版本的环境

需要保持 php, phpize, php-config 为目标版本。

phpize 用来初始化扩展,确定扩展使用的 php api 版本, 并且生成配置文件比如 configure 脚本
php-config 被 configure 用来确定包含 php 的头文件和一些库

ubuntu 系统下可以使用 update-alternatives 替换, 其他 linux 发行版如果没有类似的工具,可以使用软链接替换。

+ 设置 php 版本

update-alternatives --list php
/usr/bin/php7.0
/usr/bin/php7.2

# 设置 php 为 7.0 版本
update-alternatives --set php /usr/bin/php7.0

# 或是使用软链接
# ln -s /usr/bin/php7.0 /usr/bin/php
  • 设置 phpize 版本
# 查看可用的 phpize
update-alternatives --list phpize
/usr/bin/phpize7.0
/usr/bin/phpize7.2

# 设置 phpize 为 7.0 版本
update-alternatives --set phpize /usr/bin/phpize7.0

# 或是使用软链接
# ln -s /usr/bin/phpize7.0 /usr/bin/phpize
  • 设置 php-config 版本
# 查看可用的 php-config
update-alternatives --list php-config
/usr/bin/php-config7.0
/usr/bin/php-config7.2

# 设置 php-config 为 7.0 版本
update-alternatives --set php-config /usr/bin/php-config7.0

# 或是使用软链接
# ln -s /usr/bin/php-config7.0 /usr/bin/php-config

设置完以上步骤后,就可以按文章开头的步骤编译安装 php7.0或其他 php 版本的扩展了。