如何制作一个php扩展
admin
2023-06-30 19:04:10
0

博客:http://lijinhuan.blog.51cto.com/

微博:http://weibo.com/lijinhuanexperience

代码:https://github.com/lijinhuan



一、安装php

假如把php安装/usr/local/php下


二、php扩展框架工具

进入 /php源码/ext 目录

执行

./ext_skel --extname=my_module

显示结果

Creating basic files: config.m4 config.w32 .svnignore my_module.c php_my_module.h CREDITS EXPERIMENTAL tests/001.phpt my_module.php [done].


To use your new extension, you will have to execute the following steps:


1.  $ cd ..

2.  $ vi ext/my_module/config.m4

3.  $ ./buildconf

4.  $ ./configure --[with|enable]-my_module

5.  $ make

6.  $ ./sapi/cli/php -f ext/my_module/my_module.php

7.  $ vi ext/my_module/my_module.c

8.  $ make


Repeat steps 3-6 until you are satisfied with ext/my_module/config.m4 and

step 6 confirms that your module is compiled into PHP. Then, start writing

code and repeat the last two steps as often as necessary.

其实这里就教了你怎么操作了

在当前目录再执行 cd my_module/ 进入我们的模块目录

然后我们要修改文件顺序是

configue.m4

my_module.c

php_my_module.h

修改configue.m4

根据你自己的选择将

dnl PHP_ARG_WITH(my_module, for my_module support,


dnl Make sure that the comment is aligned:

dnl [  --with-my_module             Include my_module support])


修改成

PHP_ARG_WITH(my_module, for my_module support,


Make sure that the comment is aligned:

[  --with-my_module             Include my_module support])


或者将

dnl PHP_ARG_ENABLE(my_module, whether to enable my_module support,


dnl Make sure that the comment is aligned:

dnl [  --enable-my_module           Enable my_module support])


修改成

PHP_ARG_ENABLE(my_module, whether to enable my_module support,


Make sure that the comment is aligned:


[  --enable-my_module           Enable my_module support])


其实就是去掉前面的dnl

修改my_module.c

将文件其中的下列代码进行修改


/* Every user visible function must have an entry in my_module_functions[].


*/

function_entry my_module_functions[] = {

PHP_FE(say_hello,       NULL)  /* ?添加着一行代码 */


PHP_FE(confirm_my_module_compiled,      NULL) /* For testing, remove later. */


{NULL, NULL, NULL}      /* Must be the last line in my_module_functions[] */


};

在文件的最后添加下列代码

PHP_FUNCTION(say_hello)

{

zend_printf("hello world/n");


}

修改php_my_module.h

在PHP_FUNCTION(confirm_my_module_compiled ); /* For testing, remove later. */

添加一行:

PHP_FUNCTION(say_hello); /* For testing, remove later. */

三、执行

/usr/local/php/bin/phpize

四、编译安装扩展

然后执行./configure --enable-my_module --with-php-config=/usr/local/php/bin/php-config


相关内容

热门资讯

原创 华... 华为公布了一个名叫“韬定律”的东西。说出来你可能不信,这套新玩法,要把西方称霸了60年的芯片底层逻辑...
原创 华... 在华为畅享90 Plus和90 Pro Max取得出众的市场成绩之后,有消息指出,华为畅享90系列接...
一颗流星在美国马萨诸塞州上空爆... 当地时间5月30日,一颗流星在美国东北部马萨诸塞州近海上空爆炸,并引发巨响。该州多地居民均听到爆炸声...
鸿蒙智家框架合作协议签约仪式在... 5月29日,鲁班兄弟装饰工程有限公司与华为终端有限公司在华为云南区域总部举行鸿蒙智家框架合作协议签约...
中国科学院工程热物理所在超临界... 以超临界二氧化碳(S-CO₂)为代表的新型超临界流体正以其独特优势,在制冷、发电、储能等领域拓展应用...
5月31日,“蓝月亮”上线 5月31日,农历四月十五,一轮满月将现身夜空。这轮满月有些特别,它是本月第二次满月,同时它又是本年度...
原创 华... 华为在6月份的新品越来越丰富,比如智能手机、智能手表、耳夹式耳机、新一代全屋智能等,覆盖到多场景。其...
伊朗称对霍尔木兹海峡航运实施全... 据伊朗方面当地时间5月30日消息,伊朗武装部队哈塔姆安比亚中央总部说,伊朗对霍尔木兹海峡航运实施全面...
13人遇难“致命黑车”调查:座... 5月28日凌晨,一辆载满河南邓州周边等地乘客的大通客车,从浙江杭州出发赶回邓州,经过G40沪陕高速河...
多地职校招生报名火爆 作者 | 第一财经 林靖职业教育正在成为越来越多人的“主动选择”,中职赛道不再是备选项。近日,北京中...