seteuid0's blog
Themed by Diary.
开发PHP扩展(extension)或模块(module)简介

PHP的插件分为两种:PHP extensions 和Zend Extensions.其中PHP extensions 被当作modules,而Zend extensions被当作extensions.这两个的主要差异在于Engine中注册了不同的钩子。(当然在插件代码编写和使用的配置文件中也存在一定差异,这是后话)

环境搭建

首先需要搭建基础的php环境,我采用Fedora自带的库,然后下载系统对应的rpm源码包编译后使用,这样就可以保证和系统自带版本一致。

yundownload –source php rpm -ivh php-*.src.rpm Cd ~/rpmbuild/SPEC/ rpmbuild -ba php.spec

这样就有了php的源码环境。

代码编写

开发PHP插件可以使用源码中的ext_skel快速的生成框架代码,只需要简单的修改框架代码就可以生成一个可用的PHP插件。 最简单的使用模式就是 Php_src/ext/ext_skel –extname=module 执行后生成了由你制定的module关联的几个文件,module.c和php_module.h,以及config.m4工程配置文件 对应的修改这几个文件就可以了。 如果是要开发zend_extension则记得添加如下内容

/* This is a Zend  extension */ #ifndef ZEND_EXT_API #define ZEND_EXT_API    ZEND_DLEXPORT #endif ZEND_EXTENSION(); ZEND_DLEXPORT zend_extension zend_extension_entry = {

编译测试

编译测试: 执行phpize生成configure文件 然后执行./configure和make 将module目录下的so文件拷贝到你要的目录,然后配置一个php配置文件 添加extension=path/module_name.so,如果是zend extensions,则是 Zend_extension=path/module_name.so 这样,就可以开始你的调试之旅了。