扩展开发文档:https://www.kancloud.cn/nickbai/php7/363309

简介

本扩展是基于原文档链接的一个简略上手操作说明,同时也发现原文档说明与实际操作有出入的地方。

环境

以下是笔者编写测试扩展的开发环境

PHP源码

可以先从github仓库下载PHP源代码库(对应PHP版本分支),并解压。

生成扩展骨架

进入源码/ext目录,可以找到ext_skel.php脚本,通过此脚本可以生成扩展的基本构架,,帮助开发者快速生成一个规范的扩展结构。以下为示例命令:

php ext_skel.php --ext 扩展名称 --dir 扩展代码目录

执行完以后会在ext目录下新生成一个扩展目录,比如–ext是myfunc,则将生成以下文件:

|---myfunc
|   |---config.m4     //autoconf规则的编译配置文件
|   |---config.w32    //windows环境的配置
|   |---myfunc.c      //扩展源码
|   |---php_myfunc.h  //头文件
|   |---tests        //测试用例,执行make test时将执行、验证这些用例
|       |---001.phpt
|       |---002.phpt
|       |---003.phpt

这个脚本主要生成了编译需要的配置以及扩展的基本结构,初步生成的这个扩展可以成功的编译、安装、使用,实际开发中我们可以使用这个脚本生成一个基本结构,然后根据具体的需要逐步完善。

配置

1.用phpize创建配置,需要先进入到扩展代码目录

/path/to/phpize
./configure --with-php-config=/path/to/php-config

2.编译

make
make test
make install clean

3.在/usr/local/Cellar/php/7.3.4/pecl/20180731/会出现一个myfunc.so的文件,表示扩展已编译成功。

安装

找到php.ini配置加入如下配置:

extension=myfunc.so

在php-cli模式下可以直接测试扩展,php-fpm模式需要重启php-fpm。