PHP扩展可以在编译PHP时一起编译,也可以单独编译为共享库,共享库的像是需要将库的名称加入到PHP.ini配置中去,在pho_module_startup()阶段PHP会根据php.ini的配置将对应的扩展共享库加载到PHP中
PHP提供了几个用于简化扩展开发的脚本工具:ext_skel、phpsize、php-config
这些工具主要用来扩展的生成和编译。
ext_skel:这个脚本位于php源码的/ext目录下,它的作用是用来生成扩展的基本骨架,帮助开发者快速生成一个规范的扩展结构:
$ ./ext_skel --extname=myexttest
执行完之后在ext目录下新生成一个扩展目录,比如
---myexttest
------config.m4 //autoconf规则的编译配置文件
-------config.w32 //windows环境的配置
-------CREDITS
-------EXPERIMENTAL
-------include //依赖库的include头文件
-------myexttest.c //扩展源码
-------php-myexttest.h //头文件
-------myexttest.php
这个脚本主要生成来编译需要的配置及扩展的基本结构,初步生成的这个扩展可以成功编译、安装和使用,实际开发中我们可以用这个脚本生成一个基本结构,然后根据具体的需要完善
phpsize是扩展编译必用的一个脚本,主要是操作复杂的autoconf/automake/autoheader/autolocal等系列命令,用于生成扩展的configure文件,这个就是我上上篇文章写到用的的。
总结一下编写扩展的步骤
1、通过ext目录下的ext_skel脚本生成扩展的基本扩展./ext_skel -extname
2、修改config.m4配置:设置编译配置参数、设置扩展的源代码、依赖库/函数检查等
3、编写扩展要实现的功能:按照PHP扩展的格式及PHP提供的api编写功能
4、生成configure:扩展编写完成后执行phpsize脚本生成configure及其他配置文件
5、编译&安装:./configure、make、make install 然后将扩展的.so路径添加到php.ini中