首先说明一下,PHP扩展有两种编译方式:方式一:在编译PHP时直接将扩展编译进去方式二:扩展被编译成.so文件,在PHP.ini里配置加载路径;
以下开始说明创建PHP扩展并编译的步骤:下载PHP源码,并解压,在源码的根目录下开始操作,1.使用ext_skel生成扩展框架,如下:
ext_skel在执行后,会提示开发者后续的操作步骤,这个操作步骤是扩展的两种编译方式里的方式一的步骤,如下:
2.修改文件ext/myfirstext/config.m4
重点看line10-18的代码,用于设置./configure时启用此扩展的命令选项,将其中line16和line18的dnl删掉,把dnl理解为注释符。
以上两步骤是公共的,以下将分别介绍编译PHP扩展的两种方式,方式一:编译PHP时直接将扩展编译进去3.在源码根目录下执行./buildconf,如下4.在源码根目录下执行./configure–enable-myfirstext为了减少编译时间,可以在configure阶段指明不编译某些模块,比如:
5.在源码根目录下执行make
注意编译成功后,别执行makeinstall了,因为至此,扩展myfirstext已经编译成功,并且已经生成了相应的php二进制文件了,它在./sapi/cli/PHP
方式二:扩展被编译成.so文件,在php.ini里配置加载路径3.在扩展目录ext/myfirstext/下执行phpize命令4.在扩展目录ext/myfirstext/下执行./configure–enable-myfirstext命令5.在扩展目录ext/myfirstext/下执行make执行make后会在ext/myfirstext/modules下生成对应的.so文件,在PHP.ini中配置好加载此文件即可。
校验扩展是否加载成功执行./sapi/cli/php-fext/myfirstext/myfirstext.php或者通过php-m列出所有扩展,查看是否有myfirstext,执行命令:./sapi/cli/PHP-m
grepmyfirstext通过以上校验,说明扩展编译成功了。但是到目前为止,还没有编辑过c相关的代码,一切都是ext_skel默认生成的,查看这个扩展myfirstext包含哪些函数呢?如下:
OK,目前为止熟悉了PHP扩展框架的生成,配置,和编译。接下来就要往扩展myfirstext里添加一个自己的函数。
北京治白癜风做好的医院北京治疗白癜风究竟花多少钱