PHP扩展开发之快速入门

网友投稿 286 2022-11-18

PHP扩展开发之快速入门

linux系统

php源码包下载地址:​​7.3开始,开发扩展,取消了 ./ext_skel 命令工具,

要使用 php ext_skel.php 命令的形式创建扩展

php源码安装我就不多说了,参照我的另一篇文章​​​javascript:void(0)​​ 输入命令:

php -vPHP 7.3.29 (cli) (built: Aug 2 2021 13:48:12) ( NTS )Copyright (c) 1997-2018 The PHP GroupZend Engine v3.3.29, Copyright (c) 1998-2018 Zend Technologies

表示php源码安装已经安装好了

在ext目录执行命令

php ext_skel.php --ext foobar

命令执行完毕后输出:

Copying config scripts... doneCopying sources... doneCopying tests... done...

这表示已成功生成名为foobar的PHP扩展的基本骨架,在当前目录生成了一个foobar的文件夹,我们扩展的所有代码都将放在此目录下。目录下面会生成这几个文件:config.m4,config.w32,foobar.c,php_foobar.h tests.

编辑php_foobar.h,最后加上这一行:

PHP_FUNCTION(halo);

编辑foobar.c,找到这个方法

static const zend_function_entry foobar_functions[] = { PHP_FE(foobar_test1, arginfo_foobar_test1) PHP_FE(foobar_test2, arginfo_foobar_test2) PHP_FE_END};

在最后一句前面加上这一行:

static const zend_function_entry foobar_functions[] = { PHP_FE(foobar_test1, arginfo_foobar_test1) PHP_FE(foobar_test2, arginfo_foobar_test2) PHP_FE(halo,NULL) PHP_FE_END};

接下来是真正编写halo函数实现的时候。 在文件末尾添加以下代码:

PHP_FUNCTION(halo){ php_printf("hello world!");}

注意:这里的字符串不能用单引号,这是c语言的代码。

下面开始编译安装扩展

首先确保已经安装phpize,进入到扩展目录执行下面的命令:

[root@localhost foobar]# /usr/local/php/bin/phpizeConfiguring for:PHP Api Version: 20180731Zend Module Api No: 20180731Zend Extension Api No: 320180731

接着执行下面的命令

[root@localhost foobar]# ./configure --with-php-config=/usr/local/php/bin/php-config [root@localhost foobar]# make && make installInstalling shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/

看到最后这行表示扩展编译安装成功

打开扩展目录多了一个foobar.so

[root@localhost foobar]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/foobar.so opcache.a opcache.so

打开PHP的配置文件php.ini,在文件的末尾加入以下内容:

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/foobar.so

执行查看扩展命令:

[root@localhost foobar]# php -m[PHP Modules]CorectypedatedomfileinfofilterfoobarhashiconvjsonlibxmlmbstringopensslpcrePDOpdo_sqlitePharposixReflectionsessionSimpleXMLSPLsqlite3standardtokenizerxmlxmlreaderxmlwriter

发现多了一个foobar

接下来我们来验证一番,在/root/php目录新建一个php文件填入以下内容:

接着我们执行这个PHP文件

[root@localhost php]# php foobar.phphello world!

看到以上输出表示我们编写的扩展已经大功告成了。 如果你觉得这文章不错,请给我点个赞吧_!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java中a=a+1和a+=1的区别介绍
下一篇:H3C ICG网关3G无线接入解决方案
相关文章

 发表评论

暂时没有评论,来抢沙发吧~